0

我必须编写一个 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.'

数据库中没有满足上述所有条件的结果。但是我得到了不同日期的结果。但我想确保 date_of_vazhipad='2013-11-20' 以便查询可以正常工作。

4

2 回答 2

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.'
于 2013-11-02T09:49:54.303 回答
1

您可以使用REGEXP缩短查询

正则表达式是'^ABH19|^ABH18|^ABH17|^ABH15'

IE

SELECT * FROM tbl_transaction 
  WHERE trans_name REGEXP '^ABH19|^ABH18|^ABH17|^ABH15'
   AND date_of_vazhipad='2013-11-20' 
   AND trans_status='Completed successfully.';

在这里找到参考

于 2013-11-02T09:54:54.907 回答