MySQL:如何 select 与 table 不同的值?

MySQL: How to select distinct values from a table?

我有很多行和列的巨大 table,但我只会描述其中重要的部分:

+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255)     | NO   |     | NULL    |                |
| artikel   | int(10) unsigned | NO   | IDX | NULL    |                |
| color     | varchar(255)     | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+

示例数据:

 1    apple        1000      red
 2    apple        1000      yellow
 3    lemon        2000      blue
 4    lem on       2000      green
 5    lemon        2000      black
 6    apple        1000      white
 7    cherry       3000      lime
 8    cherry       3000      pink
 9    lemon        2000      silver
10    apple        1000      gold

如您所见,索引在 artikel 上,每个 artikel 都有一些 name(每个 artikel 都有相同的 name ) 和不同的 color。一切正常,但是第4行有问题,错误name = lem on,应该是lemon.

我想select这些行(GROUP BY artikel),其中没有唯一的name,而是HAVING COUNT(name) > 1。所以我的 select 将 return 一行,其中 artikel = 2000.

我尝试了 HAVINGDISTINCT,但没有成功。

怎么做到的?

使用group byhaving:

select artikel
from exampledata
group by artikel
having min(name) <> max(name);

您还可以在 having 子句中使用 count(distinct)。但是 count(distinct) 通常需要比仅比较最小值和最大值更多的工作。