Давайте этот образец данных:SQL: выбрать несколько различных столбцов из той же таблицы отдельно
+-------+---------+
| col1 | col2 |
+-------+---------+
| 111 | hello |
| 222 | hello |
| 111 | blabla |
| 444 | there |
| 555 | blabla |
| 555 | there |
+-------+---------+
Мне нужен SQL возвращаются различные значения для каждого столбца отдельно (в качестве корма для значений раскрывающихся для фильтрации). Таким образом, результат должен быть:
+-------+---------+
| col1 | col2 |
+-------+---------+
| 111 | hello |
| 222 | blabla |
| 444 | there |
| 555 | |
+-------+---------+
Результаты не должны быть в этом формате; более важно, чтобы у меня были разные значения для легкого доступа и итерации.
Ближайший я получил отсюда: https://stackoverflow.com/a/12188117/169252
select (SELECT group_concat(DISTINCT col1) FROM testtable) as col1, (SELECT group_concat(DISTINCT col2) FROM testtable) as col2;
Это возвращает:
+-----------------+-------------------+
| col1 | col2 |
+-----------------+-------------------+
| 111,222,444,555 | velo,hallo,blabla |
+-----------------+-------------------+
Это довольно близко, и я выберу этот, если не лучшее решение не приходит; это не оптимально, поскольку значения разделены запятой, и мне нужно разделить результаты.
Я также попытался:
SELECT DISTINCT from col1,col2 FROM testtable;
Это возвращает значения distint обеих колонок, а не то, что я хочу.
также:
select col1,col2 from testtable group by col1,col2;
, который был предложен в другом месте не возвращает то, что мне нужно, но возвращает каждый столбец-отчетливый :)
Почему бы просто не задать два запроса, по одному для каждого столбца? –
Для меня очевидно, что я могу сделать два отдельных запроса DISTINCT, но мне интересно, для производительности, если это возможно сделать в одном запросе? – faboolous
Лучший способ - сделать два запроса. Это было бы намного быстрее, чем при анализе результата group_concat – Evgeny