Mysql 筛选重复项后选择具有唯一值的行

Mysql 筛选重复项后选择具有唯一值的行,mysql,sql,group-by,aggregate-functions,Mysql,Sql,Group By,Aggregate Functions,我正试图得到只有一个人使用的颜色。使用以下示例数据: +---------+-------------+ | color | name | +---------+-------------+ | red | Jane | | red | Jane | | red | Bob | | blue | David | | blue | Bill | | green

我正试图得到只有一个人使用的颜色。使用以下示例数据:

+---------+-------------+
| color   | name        | 
+---------+-------------+
| red     | Jane        | 
| red     | Jane        | 
| red     | Bob         | 
| blue    | David       | 
| blue    | Bill        | 
| green   | Jack        | 
| green   | Jack        | 
| purple  | Jack        | 
| orange  | Dan         | 
+---------+-------------+
我用电脑把复制品处理掉了

选择颜色、名称 从桌子上 按颜色、名称分组

+---------+-------------+
| color   | name        | 
+---------+-------------+
| red     | Jane        | 
| red     | Bob         | 
| blue    | David       | 
| blue    | Bill        | 
| green   | Jack        | 
| purple  | Jack        | 
| orange  | Dan         |
+---------+-------------+

我需要做什么才能进一步过滤到我想要的绿色、紫色和橙色的结果集,因为只有一个人与该颜色关联?

您可以通过进一步查询来完成此操作。将您拥有的作为子查询,然后将其用作第二个子查询的源,该子查询统计为每种颜色显示的不同名称的数量。然后,它只是从唯一名称数为1的结果集中进行选择

SELECT color
FROM (SELECT color, COUNT(name) namecount FROM (SELECT color, name 
          FROM table GROUP BY color, name) t1
      GROUP BY color) t2
WHERE namecount = 1

我很难理解你的情况。您所说的与其他颜色名称不同的
颜色是什么意思?为什么包括了橙色?你是说只有一个不同名称的颜色吗?@DavyM:是的,很抱歉给你带来了困惑。我试图用一种非常具体的方式来描述它。此后,我对该问题进行了编辑。在子查询中添加别名后,它会返回正确的颜色,但我在何处添加回与颜色对应的名称列?使用原始查询的内部联接
SELECT color,name FROM table GROUP BY color,name
。这将导致仅为最终列表中的颜色创建一个名称记录。