2013-11-02 44 views
0

我必须编写一个MySQL查询来获取我的数据库中的结果,指定的日期和代码如ABH18或ABH17或ABH19。我写下面的查询。MySQL查询给出了错误的结果

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没有结果满足上述所有conditions.But我得到不同日期的结果。但我想确保date_of_vazhipad ='2013-11-20',以便查询可以正常工作。

回答

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

您可以使用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