我正在努力获得仅由唯一个人使用的颜色。使用以下示例数据:
+---------+-------------+
| color | name |
+---------+-------------+
| red | Jane |
| red | Jane |
| red | Bob |
| blue | David |
| blue | Bill |
| green | Jack |
| green | Jack |
| purple | Jack |
| orange | Dan |
+---------+-------------+
我用
删除了重复项选择颜色,名称 从表 GROUP BY颜色,名称;
+---------+-------------+
| color | name |
+---------+-------------+
| red | Jane |
| red | Bob |
| blue | David |
| blue | Bill |
| green | Jack |
| purple | Jack |
| orange | Dan |
+---------+-------------+
我需要做什么才能将其进一步过滤到我想要的绿色,紫色和橙色结果集,因为只有一个人与该颜色相关联?
答案 0 :(得分:2)
您可以通过在查询中更进一步来完成此操作。将您拥有的内容作为子查询,然后将其用作第二个子查询的源,该子查询计算为每种颜色显示的不同名称的数量。然后,它只是从结果集中选择,其中唯一名称的数量是一。
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