我有一张这样的表:
+-----+-----+-------+
| 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;
......没有成功。
有什么想法吗?
答案 0 :(得分:43)
使用having
子句比较聚合。
此外,您需要按照聚合的内容进行分组,以使查询正常工作。以下是一个开始,但由于你错过了一个group by子句,它仍然不会起作用。你到底想要计算什么?
select fk, count(value)
from table
group by fk
having count(value) > 1;