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
。这将导致仅为最终列表中的颜色创建一个名称记录。