90

假设我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。不是价值的独特组合

4

6 回答 6

98

我知道这个问题太老了,无论如何:

SELECT a, b
FROM mytable
GROUP BY a, b;

这将为您提供所有组合。

于 2015-10-20T13:06:27.027 回答
58

这有帮助吗?

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
于 2012-08-29T23:56:27.417 回答
22

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

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
于 2012-08-29T23:55:07.133 回答
21

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

SELECT DISTINCT(CONCAT(a,b)) AS cc FROM my_table GROUP BY (cc);
于 2015-09-30T08:29:11.463 回答
9

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

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

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

即添加 count(*) 字段。这将使您了解使用 group 命令消除了多少行。

于 2012-08-29T23:50:40.247 回答
9

这将为所有列提供 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
于 2015-03-04T22:33:26.140 回答