gpt4 book ai didi

mysql - 获取 MAX(date) < X 的数据

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

我有两个具有一对多关系的表。

Table1
ID name email
Table2
ID table1_ID date

我需要从 Table1 where 获取所有数据:

MAX(date) from Table2 < "2016-01-01"

这行不通。 Max 在 where 子句中被认为是“无效的”。我所做的是:

SELECT Table1.name, Table1.email, tmp.maxdate
FROM Table1
JOIN ( SELECT MAX(date) maxdate, table1_ID
FROM Table2
GROUP BY table1_ID ) as tmp
ON tmp.table1_ID = table1.id
WHERE tmp.maxdate < "2016-01-01"
AND (other conditions)

所以这行得通。但我认为性能会很糟糕 - explain 显示正在读取所有 Table2,并且该表会增长很多。

关于我如何才能做到这一点,或者如何提高我当前的查询性能的任何想法?

最佳答案

尝试:

SELECT Table1.name, Table1.email, tmp.maxdate
FROM Table1
INNER JOIN ( SELECT MAX(date) maxdate, table1_ID
FROM Table2
GROUP BY table1_ID
HAVING maxdate > "2016-01-01" ) as tmp
ON tmp.table1_ID = table1.id
WHERE
AND (other conditions)

以前,您只需从 Table2 中带回所有人,然后将其加入 Table1。这将淘汰所有没有 maxdate >“2016-01-01”的人,并加入 Table1。

关于mysql - 获取 MAX(date) < X 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38831807/

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