假设我在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
列的不同值。不是值的独特组合
答案 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