Как обратиться к нескольким столбцам как один в MySQL? - PullRequest
3 голосов
/ 10 февраля 2012

Столбцы a, b и c содержат некоторые значения одинаковой природы. Мне нужно выбрать все уникальные значения. Если бы у меня был только один столбец, я бы использовал что-то вроде

ВЫБЕРИТЕ DISTINCT a ОТ mytable ЗАКАЗАТЬ ПО a;

но мне нужно обработать столбцы a, b и c как один и получить все уникальные значения, когда-либо встречающиеся среди них.

В качестве примера, пусть это будет CSV-представление mytable, первая строка с именами столбцов:

a, b, c
1, 2, 3
1, 3, 4
5, 7, 1

Результат запроса должен быть:

1
2
3
4
5
7

ОБНОВЛЕНИЕ: я не понимаю, почему вы все предлагаете обернуть его в дополнительные SELECT? Мне кажется, что ответ

(SELECT `a` AS `result` FROM `mytable`)
UNION (SELECT `b` FROM `mytable`)
UNION (SELECT `c` FROM `mytable`)
ORDER BY `result`;

не так ли?

Ответы [ 4 ]

5 голосов
/ 10 февраля 2012

То есть вам нужен один столбец с уникальными значениями из a, b и c? Попробуйте это:

(select a as yourField from d1)
union
(select b from d2)
union
(select c from d3)
order by yourField desc
limit 5

Рабочая пример

Отредактировано после изменения требований ... Там у вас есть запрошенные order by и limit. Конечно, в этом примере вы получите только 5 записей

5 голосов
/ 10 февраля 2012

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

select a from my table
UNION
select b from my table
UNION
select c from my table
1 голос
/ 10 февраля 2012

попробуйте это:

SELECT b.iResult
FROM
    (SELECT a as iResult FROM tableName
        UNION
    SELECT b as iResult FROM tableName
        UNION
    SELECT c as iResult FROM tableName) b
ORDER BY b.iResult 
LIMIT BY 10 -- or put any number you want to limit.
1 голос
/ 10 февраля 2012
SELECT tmp.a
FROM 
(SELECT column_1 AS a
FROM table
UNION
SELECT column_2 AS a
FROM table
UNION
SELECT column_3 AS a
FROM table) AS tmp
ORDER BY `tmp`.`a` ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...