MySQL SELECT DISTINCT多列

时间:2012-08-29 23:43:27

标签: mysql sql distinct

假设我在MySQL数据库的表中有列a, b c, d。我要做的是在我的表中选择所有这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 个答案:

答案 0 :(得分:51)

我知道问题太旧了,无论如何:

select a, b from mytable group by a, b

将为您提供所有组合。

答案 1 :(得分:43)

这有帮助吗?

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

答案 2 :(得分:19)

猜测你想要的结果,也许这就是你想要的查询

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

答案 3 :(得分:11)

另一种简单的方法是使用concat()

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

答案 4 :(得分:8)

您的查询都是正确的,应该给您正确的答案。

我建议使用以下查询来解决您的问题。

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

即添加计数(*)字段。这将告诉您使用group命令消除了多少行。

答案 5 :(得分:7)

这将在所有列中提供DISTINCT值:

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