2011-04-07 2 views
0

У меня есть таблица mysql, которая имеет два поля, которые хранят один и тот же тип информации. Я хочу получить все уникальные значения в этих двух областях.Получение всех уникальных значений между двумя столбцами в mysql

Если бы это было только одно поле я мог сделать:

SELECT distinct FIELD1 FROM table 

Как я могу получить все уникальные значения из FIELD1 и FIELD2

Осветление: Я не имею в виду уникальные пары.

Say field1 содержит 1,13,5,25,13,8 и field2 содержит 6,10,1,30,13

Я хочу, чтобы запрос, который возвращает 1,13,5,25,8 , 6,10,30

ответ

2

Попробуйте

select distinct * FROM (
    select distinct field1 as n from table 
    union 
    select distinct field2 as n from table) as t; 
+0

Я думаю, что было бы более эффективно применять 'distinct' только один раз, по внешнему запросу. –

+0

Это зависит от ваших данных и в основном от количества неповторимых значений для каждого поля. – Sector

+0

С помощью простого подзапроса, возможно, но не является оператором 'union', который уже устраняет дубликаты в вашем подзапросе? Возможно, лучший способ рассказать о моем вопросе: «Является ли более эффективным явное использование« отличного »или« разрешить »его? (Это может быть иначе для других dbs, но OP задает вопрос о MySQL, поэтому, вероятно, достаточно просто узнать, как он работает здесь.) –

0
select field1 from table 
union 
select field2 from table 
+0

Я бы как узнать, что не так в моем запросе. –

+0

Не могли бы вы отреагировать на свой ответ? Я отказался от вас, потому что я пропустил что-то в этом вопросе, и, конечно, теперь, когда мне кажется, что ваш ответ лучший, я не могу изменить свой голос, и у меня нет ответа, чтобы отредактировать свой ответ. –

+0

Нет проблем. Я выживу. Bye :) –

0

Вы имеете в виду все уникальные пары? Тогда это может сделать (немного грязный, хотя):

SELECT distinct CONCAT(FIELD1, '|', FIELD2) FROM table 
+0

Не уникальные пары. Я обновил вопрос. – Mike

0

Вы можете сделать объединение двух операторов SQL:

Select distinct FIELD1 From table 
UNION 
Select distinct FIELD2 From table 
2
select field1 ,field2 FROM tablename group by field1 ,field2 
Смежные вопросы