仅选择具有条件的两行

时间:2014-01-21 21:08:42

标签: sql sql-server aggregate-functions

我有一张类似这样的表:

id title 
11 test
22 test
33 dummy
37 dummy
35 dummy
44 abc
45 abc

选择之后我只需要这样:

id title 
11 test
22 test
44 abc
45 abc
我是这样写的:

select * from content having count(*)=2 group by id, title

但我不确定为什么它没有返回预期的结果..

2 个答案:

答案 0 :(得分:4)

您需要从GROUP BY子句中删除id,这意味着您无法保留SELECT子句(对于SQL Server和大多数DBMS)。所以,请在这样的子查询中包含。

select * from content where title in (
  select title 
  from content 
  group by title
  having count(*)=2 
)

答案 1 :(得分:3)

  

但我不确定为什么它没有返回预期的结果

因为当您按ID AND title进行分组时,HAVING子句将只计算这两个字段的唯一组合。它不仅仅计算每个title的记录数。

我想你想要这个:

select * from content 
WHERE title in
( SELECT title 
  FROM content 
  group by title 
  having count(*)=2 
)