MySQL查询给出了错误的结果

时间:2013-11-02 09:48:17

标签: mysql

我必须编写一个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',以便查询可以正常工作。

2 个答案:

答案 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