多条件WHERE子句SQL查询问题:筛选指定状态产品
问题分析
- 第一个SQL语句错误:使用
AND连接两个互斥的SystemProductID条件,单条记录不可能同时等于两个不同ID,因此无返回结果。 - 第二个SQL语句错误:
EXISTS仅判断表中是否存在满足条件的记录,一旦存在就会返回表中所有数据,无法筛选出目标ID的记录。
正确SQL语句
要获取指定的两个产品记录,可通过以下两种方式实现:
写法一:使用OR匹配每个ID的对应状态
SELECT * FROM product WITH (NOLOCK) WHERE (SystemProductID = '5146324' AND EndDate != '4712-12-31 00:00:00.000') OR (SystemProductID = '5148478' AND EndDate = '4712-12-31 00:00:00.000')
写法二:使用IN配合条件逻辑(扩展ID时更灵活)
SELECT * FROM product WITH (NOLOCK) WHERE SystemProductID IN ('5146324', '5148478') AND ( (SystemProductID = '5146324' AND EndDate != '4712-12-31 00:00:00.000') OR (SystemProductID = '5148478' AND EndDate = '4712-12-31 00:00:00.000') )
执行以上语句即可得到你期望的两条产品记录。
内容的提问来源于stack exchange,提问作者William Mulligan
相关产品推荐
相关产品推荐

