Sqlite:获取1列多次存在的记录

时间:2016-03-31 12:47:31

标签: sqlite

我有一个看起来像这样的表:

+---------+--------+
|  Food   | Color  |
+---------+--------+
| apple   | green  |
| banana  | yellow |
| salad   | green  |
| lemon   | yellow |
| coconut | brown  |
+---------+--------+

根据Color列,我想获取Color列不止一次存在的记录。

在我的示例中,应该提取记录applebananasaladlemon,而不是coconut(因为颜色{{1}只存在一次)。

但我不确定选择陈述会是什么。

我在想brown之类的东西,但我认为这是不对的。

1 个答案:

答案 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);