23

我有一张这样的桌子:

+-----+-----+-------+
| id  | fk  | value |
+-----+-----+-------+
| 0   | 1   | peter |
| 1   | 1   | josh  |
| 3   | 2   | marc  |
| ... | ... | ...   |

我现在想获取所有具有多个值的条目。预期的结果是:

+-----+-------+
| fk  | count |
+-----+-------+
| 1   | 2     |
| ... | ...   |

我试图做到这一点:

select fk, count(value) from table where count(value) > 1;

但甲骨文不喜欢它。

所以我尝试了这个...

select * from (
    select fk, count(value) as cnt from table
) where cnt > 1;

...没有成功。

有任何想法吗?

4

1 回答 1

54

使用该having子句比较聚合。

此外,您需要按要聚合的内容进行分组,以使查询正常工作。以下是一个开始,但是由于您缺少 group by 子句,它仍然无法正常工作。你到底想计算什么?

select fk, count(value) 
from table 
group by fk
having count(value) > 1;
于 2009-11-26T16:48:22.727 回答