Я пытаюсь выбрать значения UNIQUE из неравномерной таблицы и показывать только уникальные.
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 |
+--------------------------+
Мне не нравятся двойные выборы. В любом случае я могу сделать это более эффективно?
Спасибо заранее.
Я думаю, этот запрос может сработать для вас.
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
похоже не соответствует вашим данным образца, поэтому я оставил его без изменений.