我有一个看起来像这样的表:
+---------+--------+
| Food | Color |
+---------+--------+
| apple | green |
| banana | yellow |
| salad | green |
| lemon | yellow |
| coconut | brown |
+---------+--------+
根据Color
列,我想获取Color
列不止一次存在的记录。
在我的示例中,应该提取记录apple
,banana
,salad
和lemon
,而不是coconut
(因为颜色{{1}只存在一次)。
但我不确定选择陈述会是什么。
我在想brown
之类的东西,但我认为这是不对的。
答案 0 :(得分:3)
要获取每种颜色的行数,您需要分组:
SELECT color,
COUNT(*)
FROM MyTable
GROUP BY color;
要仅获得具有多个条目的那些颜色,您必须对聚合结果进行过滤,并使用HAVING:
SELECT color,
COUNT(*)
FROM MyTable
GROUP BY color
HAVING COUNT(*) > 1;
然后可以使用这些颜色值来过滤原始表格:
SELECT *
FROM MyTable
WHERE color IN (SELECT color
FROM MyTable
GROUP BY color
HAVING COUNT(*) > 1);