非常基本,但不知道调用这种类型的查询...我想要一个基本上会这样做的查询(伪SQL):
SELECT name
FROM Table
WHERE activity_status != 'active'
AND there are no rows with that same name where activity_status = 'active'
(换句话说,只有当没有具有该名称的人才有效时,非活动的返回名称才会生效)
这将用于允许用户重新激活非活动项目的选项,但我想查询数据库以确保该项目尚未激活。
答案 0 :(得分:6)
您正在寻找NOT EXISTS模式。
“对于每个未激活的名称,不存在同名活动的行”
SELECT name FROM Table T1
WHERE activity_status != 'active'
AND
NOT EXISTS (SELECT *
FROM Table T2
WHERE
T2.activity_status = 'active' AND T1.name = T2.name)