我需要有关 mysql 语句的帮助。 我有 2 个表,一个包含事件详细信息,另一个包含事件日期。
我需要显示今天或之后结束的所有事件日期。
我有一个具有这些日期的事件: 29/03/2016 30/03/2016 2016/03/31
我试过这个查询:
SELECT a.event_id, event_name, event_location, event_desc,
MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date
FROM event_time a
LEFT JOIN event_time b
ON b.event_id = a.event_id
JOIN events c
ON a.event_id = c.event_id
WHERE b.event_date <= NOW()
GROUP BY a.event_id
但在 from_date 字段中我只得到 31/03/2016。
任何人都可以帮助构建正确的陈述来满足我的需要吗?
谢谢
最佳答案
好吧,你的问题是缺少一些信息,所以如果我理解正确的话,你不需要两次加入 event_times:
SELECT a.event_id, event_name, event_location, event_desc,
MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date
FROM event_time a
JOIN events c
ON a.event_id = c.event_id
WHERE a.event_date >= NOW()
GROUP BY a.event_id
我已将您的 where 子句更改为
a.event_date >= NOW()
既然你说你不想约会大于或等于今天的日期,但现在我在看你的主题,我看到你写的是相反的,所以如果你不想更小,把它调过来。
此外,一般来说,您是 LEFT JOINING
到 event_time b,并且您的 where 子句中有:
WHERE b.event_date <= NOW()
这会自动将连接变成内部连接,right
表上的过滤器应该只在 ON
子句中。在你的情况下:
LEFT JOIN event_time b
ON b.event_id = a.event_id AND
b.event_date <= NOW()
关于mysql - 如何让最小和最大日期更小等于今天mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327179/