假设我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
。不是价值的独特组合
我知道这个问题太老了,无论如何:
SELECT a, b
FROM mytable
GROUP BY a, b;
这将为您提供所有组合。
这有帮助吗?
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 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
另一种简单的方法是使用concat()
SELECT DISTINCT(CONCAT(a,b)) AS cc FROM my_table GROUP BY (cc);
您的两个查询都是正确的,应该给您正确的答案。
我建议使用以下查询来解决您的问题。
SELECT DISTINCT a,b,c,d,count(*) Count FROM my_table GROUP BY a,b,c,d
order by count(*) desc
即添加 count(*) 字段。这将使您了解使用 group 命令消除了多少行。
这将为所有列提供 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