MySQL中如何编写带多字段嵌套条件的SELECT查询语句?
MySQL 查询语句转换说明
首先明确MySQL和通用编程语言的语法差异:
- MySQL 中相等判断用单等号
=,不支持双等号==写法 - 逻辑与运算符推荐使用标准SQL的
AND(MySQL 也兼容&&,但AND跨数据库通用性更强) - 逻辑或运算符使用
OR
原始逻辑的直接转换
你给出的逻辑表达式直接转写为MySQL的WHERE条件如下:
WHERE (bulan_pembayaran = 7 AND semester_payment = 1) AND (bulan_pembayaran = 6 AND semester_payment = 4)
注意:上述条件逻辑上永远返回
false,不会匹配到任何数据。因为同一个bulan_pembayaran字段不可能同时等于7和6,原表达式存在逻辑矛盾。
常见修正写法(大概率是实际需求场景)
通常这类多组字段匹配的需求是要求满足任意一组条件,也就是将两组条件之间的逻辑与替换为逻辑或,转换后语句如下:
WHERE (bulan_pembayaran = 7 AND semester_payment = 1) OR (bulan_pembayaran = 6 AND semester_payment = 4)
该语句会匹配所有符合「付款月份为7且学期缴费为1」或者「付款月份为6且学期缴费为4」的记录。
内容的提问来源于stack exchange,提问作者Shalahudin Al Ayyuby
相关产品推荐
相关产品推荐

