请修正适用于Oracle数据库的SQL查询语句(多语法使用)
修正你的Oracle SQL查询语句
嘿,你的原SQL语句存在逻辑矛盾的问题——同一个数据行的SERIES字段不可能同时等于'I'、'J'和'K',所以用AND连接这些条件组永远返回空结果。下面给你两种可行的修正方案:
方案1:用OR连接条件组
这是最直观的写法,把条件组之间的AND换成OR,表示匹配任意一组SERIES+BOOKNO组合:
SELECT * FROM GNGRB.PRBOOK WHERE (SERIES = 'I' AND BOOKNO = '180922') OR (SERIES = 'J' AND BOOKNO = '138446') OR (SERIES = 'K' AND BOOKNO = '196491');
方案2:使用多列IN子句(更简洁)
Oracle支持多列的IN语法,能让代码更紧凑,逻辑和方案1完全一致:
SELECT * FROM GNGRB.PRBOOK WHERE (SERIES, BOOKNO) IN ( ('I', '180922'), ('J', '138446'), ('K', '196491') );
这两种写法都能正确查询出符合任意一组SERIES和BOOKNO匹配条件的数据行。
内容的提问来源于stack exchange,提问作者ownmurad
相关产品推荐
相关产品推荐

