MySQL выбирает различные несколько столбцов


допустим, у меня есть столбцы a, b c, d в таблице в базе данных MySQL. То, что я пытаюсь сделать, это выбрать различные значения всех этих 4 столбцов в моей таблице (только отдельные значения). Я пробовал такие вещи, как:

SELECT DISTINCT a,b,c,d FROM my_table;
SELECT DISTINCT a,b,c,d FROM my_table GROUP BY a,b,c,d;

ни один из них не работал. Кто-нибудь может помочь?

спасибо

Примечание Я хочу различные значения столбцов a, b, c d отдельно. Не различное сочетание значений

6 57

6 ответов:

может ли это помочь?

select 
(SELECT group_concat(DISTINCT a) FROM my_table) as a,
(SELECT group_concat(DISTINCT b) FROM my_table) as b,
(SELECT group_concat(DISTINCT c) FROM my_table) as c,
(SELECT group_concat(DISTINCT d) FROM my_table) as d

Я знаю, что вопрос слишком стар, так или иначе:

select a, b from mytable group by a, b

даст вам все комбинации.

принимая предположение о результатах, которые вы хотите, так что, возможно, это запрос, который вы хотите, то

SELECT DISTINCT a FROM my_table
UNION 
SELECT DISTINCT b FROM my_table
UNION
SELECT DISTINCT c FROM my_table
UNION
SELECT DISTINCT d FROM my_table

оба ваших запроса верны и должны дать вам правильный ответ.

Я бы предложил следующий запрос для устранения проблемы.

SELECT DISTINCT a,b,c,d,count(*) Count FROM my_table GROUP BY a,b,c,d
order by count(*) desc

это поле add count (*). Это даст вам представление о том, сколько строк было удалено с помощью команды group.

еще один простой способ сделать это с concat()

SELECT DISTINCT(CONCAT(a,b)) AS cc FROM my_table GROUP BY (cc);

Это даст различные значения во всех столбцах:

SELECT DISTINCT value
FROM (
    SELECT DISTINCT a AS value FROM my_table
    UNION SELECT DISTINCT b AS value FROM my_table
    UNION SELECT DISTINCT c AS value FROM my_table
) AS derived