gpt4 book ai didi

mysql - 如何获得只显示 MySQL 中当前或 future 项目的查询?

转载 作者:可可西里 更新时间:2023-11-01 08:37:01 25 4
gpt4 key购买 nike

我有这个问题:

$events = db_query("SELECT e.name, e.event_date, e.time, e.data, e.picture, e.event_type, v.latitude, v.longitude, v.address, v.name as vname 
FROM events e INNER JOIN venues v ON e.vid=v.vid
WHERE FIND_IN_SET('".$q."', event_type)>0
AND e.event_date > (SELECT DATE_SUB(curdate(), INTERVAL 1 DAY))
GROUP BY e.name");

除日期选择外,一切正常。我希望此查询仅列出前一天或将来的项目,但目前它列出了所有项目。关于我哪里出错的任何指示?

编辑:如果我删除第一个“WHERE”子句,那么查询将正确执行,并且只返回 future 日期的项目。

整个查询如下所示:

SELECT e.name, e.event_date, e.time, e.data, e.picture, e.event_type, v.latitude, v.longitude, v.address, v.name as vname 
FROM events e INNER JOIN venues v ON e.vid=v.vid
WHERE FIND_IN_SET('liveSports', event_type)>0
OR FIND_IN_SET('dancing', event_type)>0
OR FIND_IN_SET('drinksDeals', event_type)>0
OR FIND_IN_SET('pubQuiz', event_type)>0
OR FIND_IN_SET('boardGames', event_type)>0
OR FIND_IN_SET('fussball', event_type)>0
OR FIND_IN_SET('speedDating', event_type)>0
OR FIND_IN_SET('pool', event_type)>0
OR FIND_IN_SET('liveMusic', event_type)>0
OR FIND_IN_SET('foodDeals', e.event_type)>0
AND e.event_date >= (SELECT DATE_SUB(curdate(), INTERVAL 1 DAY))
GROUP BY e.name

我感觉问题可能出在此处进行的 ORing 数量上。如果我以这种方式减小查询的大小,结果将按预期返回。

谢谢,

最佳答案

你非常接近,但我敢打赌你想将所有 FIND_IN_SET 放在一起,然后检查所有这些的日期。我加了parens。此外,您不需要围绕 DATE_SUB 的子查询 (SELECT...)。

SELECT e.name, e.event_date, e.time, e.data, e.picture, e.event_type, v.latitude, v.longitude, v.address, v.name as vname 
FROM events e INNER JOIN venues v ON e.vid=v.vid
WHERE (FIND_IN_SET('liveSports', event_type)>0
OR FIND_IN_SET('dancing', event_type)>0
OR FIND_IN_SET('drinksDeals', event_type)>0
OR FIND_IN_SET('pubQuiz', event_type)>0
OR FIND_IN_SET('boardGames', event_type)>0
OR FIND_IN_SET('fussball', event_type)>0
OR FIND_IN_SET('speedDating', event_type)>0
OR FIND_IN_SET('pool', event_type)>0
OR FIND_IN_SET('liveMusic', event_type)>0
OR FIND_IN_SET('foodDeals', e.event_type)>0)
AND e.event_date >= DATE_SUB(curdate(), INTERVAL 1 DAY)
GROUP BY e.name

关于mysql - 如何获得只显示 MySQL 中当前或 future 项目的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183551/

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