gpt4 book ai didi

mysql - 无法发现这两个查询之间的区别

转载 作者:行者123 更新时间:2023-11-29 13:21:02 24 4
gpt4 key购买 nike

试图清理一个长查询,我提出了一个修改版本,但现在带有某些参数的旧查询返回 6 行,但我的版本不返回任何行。我一直在努力寻找差异,但找不到任何差异。以下是两个版本中具有相同参数集的 WHERE 子句:

丑陋(但有效)版本:

SELECT ... 
FROM table as a
WHERE 1=1
and a.title LIKE '%Manager%'
and a.status='Approved'
and (a.effected_date<=now())
and (
(DATE_ADD(a.effected_date, INTERVAL 30 DAY) >= now() AND a.is_hotjob=0)
or
(DATE_ADD(a.effected_date, INTERVAL 30 DAY) >= now() AND a.is_hotjob=1)
)

我的清理(但损坏)版本:

SELECT ...
FROM `table` AS `a`
WHERE CONCAT(`a`.`title`, ' | ', `a`.`job_detail_section`) LIKE '%Manager%' AND
`a`.`status` = 'Approved' AND
`a`.`effected_date` <= '2013-12-30' AND
(`a`.`effected_date` >= '2013-11-30' OR `a`.`is_hotjob` = '1')

最佳答案

你得到了最后一个 AND/OR 倒退:

`a`.`effected_date` <= '2013-12-30' OR 
(`a`.`effected_date` >= '2013-11-30' AND `a`.`is_hotjob` = '1')

编辑:重新格式化后,答案看起来更像是:

SELECT ...
FROM `table` AS `a`
WHERE CONCAT(`a`.`title`, ' | ', `a`.`job_detail_section`) LIKE '%Manager%' AND
`a`.`status` = 'Approved' AND
`a`.`effected_date` <= now() AND
`a`.`effected_date` >= DATE_ADD(a.effected_date, INTERVAL 30 DAY)

并且可能:

AND `a`.`is_hotjob` IN (0,1)

关于mysql - 无法发现这两个查询之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com