Получить имя поля в SQL-запросе с помощью DISTINCT и UNION - PullRequest
3 голосов
/ 08 декабря 2011

У меня следующий запрос:

SELECT DISTINCT(uniq)
FROM
(
    SELECT sex AS uniq FROM type4
    UNION
    SELECT fason AS uniq FROM type4
    UNION
    SELECT color AS uniq FROM type4
    UNION
    SELECT size AS uniq FROM type4
) AS Temp

Работает почти хорошо, возвращает:

[uniq] => some unique value

Можно ли узнать, из какого столбца было уникальное значение?Я имею в виду что-то вроде этого:

[uniq] => some unique value
[from] => size

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

Ваш исходный запрос не нуждается ни в подзапросе, ни в DISTINCT.Вы можете использовать:

SELECT sex AS uniq FROM type4
UNION
SELECT fason FROM type4
UNION
SELECT color FROM type4
UNION
SELECT size FROM type4

Теперь для вашего вопроса, если четыре столбца не имеют перекрывающихся значений, вы можете использовать:

2 голосов
/ 08 декабря 2011
SELECT DISTINCT(uniq)
FROM
(
    SELECT (sex + ' 1') AS uniq FROM type4
    UNION
    SELECT (fason + ' 2') AS uniq FROM type4
    UNION
    SELECT (color + ' 3') AS uniq FROM type4
    UNION
    SELECT (size + ' 4') AS uniq FROM type4
) AS Temp

тогда вы можете использовать подстроку для удаления последних 2 справа

...