SQL如何检查多列存在指定值且不等于另一列的对应值?
问题说明
我有一张包含Option1到Option6共6个字段的表,需要检查这些Option字段中是否存在value1,且该值不等于Result列中的value2。
现有SQL问题修正
你现有写法存在两个可优化点:
- 笔误:
Option 5多了空格,应该为Option5 - 无通配符的场景下用
=代替LIKE,查询效率更高
兼容全数据库的标准写法
SELECT * FROM `table` WHERE ( Option1 = 'Apple' OR Option2 = 'Apple' OR Option3 = 'Apple' OR Option4 = 'Apple' OR Option5 = 'Apple' OR Option6 = 'Apple' ) AND Result NOT LIKE 'Apple%'
更简洁的简化写法(支持多值IN判断的数据库可用,如MySQL、PostgreSQL)
SELECT * FROM `table` WHERE 'Apple' IN (Option1, Option2, Option3, Option4, Option5, Option6) AND Result NOT LIKE 'Apple%'
查询结果示例

内容的提问来源于stack exchange,提问作者Terisha Pillay
相关产品推荐
相关产品推荐

