MySQL все уникальные значения из 2 или более столбцов - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь выбрать уникальные значения из неоднородной таблицы и показать только уникальные.

SELECT DISTINCT "year" as sorter, year(data) as year, NULL as location
FROM site 
WHERE tipo='projects'

UNION

SELECT DISTINCT "loc" as sorter, NULL as year, spare_1 as location
FROM site 
WHERE tipo='projects'

ORDER BY sorter ASC, year DESC, localition ASC

Это вернет

+--------+------+----------+
| SORTER | YEAR | LOCATION |
+--------+------+----------+
| year   | 2010 | NULL     |
+--------------------------+
| year   | 2009 | NULL     |
+--------------------------+
| year   | 2008 | NULL     |
+--------------------------+
| loc    | NULL | London   |
+--------------------------+
| loc    | NULL | Paris    |
+--------------------------+
| loc    | NULL | NYC      |
+--------------------------+

Мне не очень нравится двойной выбор. Есть ли более эффективный способ сделать это?

Заранее спасибо.

1 Ответ

1 голос
/ 03 сентября 2010

Я думаю, что этот запрос может работать для вас.

SELECT DISTINCT
    CASE WHEN data IS NOT NULL THEN "year" ELSE "loc" END AS sorter,
    CASE WHEN data IS NOT NULL THEN YEAR(data) ELSE NULL END AS year,
    CASE WHEN data IS NULL THEN spare_1 ELSE NULL END AS location
FROM site
WHERE tipo='projects'
ORDER BY sorter ASC, year DESC, localition ASC

Предложение ORDER BY не соответствует вашим образцам данных, поэтому я оставил его без изменений.

...