MySQL SELECT DISTINCT多列

use*_*368 69 mysql sql distinct

假设我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;
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.有人可以帮忙吗?

谢谢

注意我想分别列的不同值a, b, c d.不是值的独特组合

nca*_*tro 62

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

select a, b from mytable group by a, b
Run Code Online (Sandbox Code Playgroud)

将给你所有的组合.

  • @ncastro道歉,但这个答案不符合这个问题. (6认同)
  • 有点酷。“分组依据”强制区分。那是怎么回事吗? (2认同)

Nes*_*zon 46

这可以帮忙吗?

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
Run Code Online (Sandbox Code Playgroud)

  • 如果我只需要前两列的不同结果但需要显示所有列,该怎么办... (7认同)
  • ncastro的更好。无论如何,更酷,更容易。 (2认同)

Adr*_*ish 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
Run Code Online (Sandbox Code Playgroud)

  • 如果要在所有列中使用DISTINCT值,则必须将此查询包装在另一个SELECT语句中,如下所示:`SELECT DISTINCT value FROM(SELECT DISTINCT AS值FROM my_table UNION SELECT DISTINCT b AS value FROM my_table UNION SELECT DISTINCT c AS value FROM my_table)AS派生` (4认同)

小智 15

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

SELECT DISTINCT(CONCAT(a,b)) AS cc FROM my_table GROUP BY (cc);
Run Code Online (Sandbox Code Playgroud)


Ham*_*han 8

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

我会建议以下查询来解决您的问题.

SELECT DISTINCT a,b,c,d,count(*) Count FROM my_table GROUP BY a,b,c,d
order by count(*) desc
Run Code Online (Sandbox Code Playgroud)

那就是添加计数(*)字段.这将使您可以了解使用group命令消除了多少行.


T. *_*nes 8

这将为所有列提供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
Run Code Online (Sandbox Code Playgroud)

  • 它会给我单列中的值,如果我想单独显示它们怎么办? (2认同)