sql - 使用 HAVING 查找恰好一行满足条件的时间

标签 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 相同的标题。这是它的作用吗?

最佳答案

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

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

关于sql - 使用 HAVING 查找恰好一行满足条件的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551007/

相关文章:

sql - PostgreSQL 中的正则表达式替换

sql - 自连接的解释

sql - 替换字符串中的前导字符

sql - PostgreSQL 在选择查询中重用计算结果

mysql - 查询左连接还是数据插入?

sql - Rails first_or_create 添加 (1=2) 到查询

php - 插入失败:Column count doesn't match value count at row 1

python - 使用 connection.execute() 的 sqlalchemy 原始 sql 查询限制

r - 总结自连接索引,同时避免 R data.table 中的笛卡尔积

mysql - 简化自连接 SQL