我必须编写一个MySQL查询,用于从我的数据库中获取指定日期和代码的结果,如ABH18或ABH17或ABH19。我写下面的查询。
select * from tbl_transaction where
trans_name like 'ABH19%' or trans_name like 'ABH18%'
or trans_name like 'ABH17%' or trans_name like 'ABH15%'
and date_of_vazhipad='2013-11-20' and trans_status='Completed successfully.'
DB没有结果满足上述所有条件。但是我得到了不同日期的结果。但我想确保date_of_vazhipad ='2013-11-20',以便查询可以正常工作。
答案 0 :(得分:3)
AND
的优先级高于OR
。将括号放在正确的位置:
SELECT * FROM tbl_transaction WHERE
(trans_name like 'ABH19%' OR
trans_name like 'ABH18%' OR
trans_name like 'ABH17%' OR
trans_name like 'ABH15%')
AND date_of_vazhipad='2013-11-20'
AND trans_status='Completed successfully.'
答案 1 :(得分:1)
您可以使用REGEXP
缩短查询
Regexp是'^ABH19|^ABH18|^ABH17|^ABH15'
<强>即强>
SELECT * FROM tbl_transaction
WHERE trans_name REGEXP '^ABH19|^ABH18|^ABH17|^ABH15'
AND date_of_vazhipad='2013-11-20'
AND trans_status='Completed successfully.';
找到参考here