Объединение столбцов в SQL - PullRequest
4 голосов
/ 11 мая 2011

Рассмотрим следующую таблицу SQL:

id | col1 | col2
----------------
1  |  a   |  b
2  |  c   |  d

Какой запрос даст мне отдельный набор результатов a,b,c,d?Я знаю, что могу сделать:

SELECT distinct col1 FROM `table` UNION
SELECT distinct col2 FROM `table`

, но это кажется уродливым (и не дает мне всего отличного набора);Кроме того, я не уверен, как я могу сделать дальнейшую обработку с этим набором результатов.Есть идея получше?

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Красота в глазах смотрящего. UNION является одним из пяти примитивных операторов реляционной алгебры Кодда, и для меня это вещь красоты.

Ваш SQL-код действительно должен получить полный набор результатов; На самом деле вы должны иметь возможность пропустить ключевые слова DISTINCT, а код все равно должен получить полный набор результатов (подсказка: набор не содержит повторяющихся элементов).

2 голосов
/ 11 мая 2011

Возможно, не лучше, но отличается:

select distinct sub.val from (
  select col1 as val from table
  union all
  select col2 as val from table
) as sub
0 голосов
/ 11 мая 2011

Вы, вероятно, могли бы использовать функции LAG и LEAD, чтобы получить значения предыдущей и следующей строки в одном наборе результатов. Проверьте эту статью:

http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...