使用HAVING查找恰好一行符合条件的时间

时间:2013-12-12 18:11:02

标签: sql postgresql self-join having

如果我想找到一个已在两年不同时间出版的书名,这有用吗?

SELECT books1.title
FROM Books books1 INNER JOIN Books books2 ON books1.title = books2.title
WHERE books1.year <> books2.year
GROUP BY books1.title
HAVING COUNT(*) = 1

所以我认为将所有行连接到具有相同标题的其他行,然后它将返回标题,其中一个且只有一行具有不同的books1.year和books2.year用于相同的标题。这是它的作用吗?

1 个答案:

答案 0 :(得分:4)

您可以按title对记录进行分组,并仅对具有两个唯一值year的人进行计数和过滤。

SELECT title
FROM Books 
GROUP BY title
HAVING COUNT(DISTINCT year) = 2