如何用SQL筛选无对应Deleted状态的Available记录
解决方案
可以用子查询结合NOT EXISTS来实现这个筛选逻辑,这是直观且高效的写法之一:
SELECT * FROM your_table main WHERE main.status = 'Available' AND NOT EXISTS ( SELECT 1 FROM your_table sub WHERE sub.ID = main.ID AND sub.RID = main.RID AND sub.IID = main.IID AND sub.status = 'Deleted' );
逻辑说明:
- 主查询先筛选出所有状态为
Available的记录 - 子查询检查**同一实例(相同ID、RID、IID)**是否存在对应的
Deleted状态记录 NOT EXISTS确保只有那些没有对应Deleted记录的Available记录才会被返回
注意事项:
- 把
your_table替换成你实际的数据表名称 - 如果
status字段的值大小写敏感(比如部分数据库区分available和Available),要确保匹配准确 - 该写法在MySQL、PostgreSQL、SQL Server等主流关系型数据库中均可正常运行
内容的提问来源于stack exchange,提问作者magna_nz
相关产品推荐
相关产品推荐

