类似 "not having"的 SQL 查询?

标签 sql

我正在尝试编写一个查询,该查询将返回哪些主机缺少某个软件:

Host                    Software
A                       Title1
A                       Title2
A                       Title3 
B                       Title1
B                       Title3
C                       Title4
C                       Title3

如何查询哪些主机缺少Title2(应该是B和C)?我已经尝试过使用 COUNT 进行 GROUP BY、HAVING 和子查询,但我似乎没有正确的想法。

最佳答案

我认为更简单的方法是:

select software
from HostSoftware hs
group by software
having max(case when software = 'Title2' then 1 else 0 end) = 0

这不需要相关子查询。而且,它应该会在大多数数据库上产生更好的执行计划。

关于类似 "not having"的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772631/

相关文章:

MySQL 查询优化

python - Django - 从 JSON 文件填充数据库表

java - Sqlite:带条件的嵌套选择

MYSQL 数据库查询与连接和计数

python - 带有 MultiIndex 列的 Pandas to_sql 索引

sql - 使用 Sequelize 连接到本地 SQL Server

sql - 如何匹配复合类型数组中的元素?

php - 搜索 csv 列并插入到 mysql

mysql - 为什么 sql = FALSE 总是返回 true

mysql - 嵌套 MySQL 查询失败,错误代码为 `Error Code 1060 Duplicate column name ' xxx'`