我有以下 SQL,它运行良好:
"SELECT t.id, t.date, t.time, t.balance FROM db1 t JOIN (SELECT tt.date, MAX(tt.time) as 'maxtime' FROM db1 tt GROUP BY tt.date) m ON m.maxtime = t.time AND t.date = m.date"
我现在想要的是插入一个 WHERE 条件,只包含特定日期的数据。具体来说,我想使用 WHERE date >= '$dateSelect'
。我不太确定我必须将此条件插入到查询的哪个位置才能使其工作 - 我已经尝试了几个位置(总是在 FROM db1
部分后面)但尚未使其工作。
谁能帮帮我?非常感谢您的帮助!
最佳答案
由于您使用的是内部联接,因此可以将此 where
子句应用于顶级查询或内部查询。就个人而言,我会将其应用于两者。在最坏的情况下,它会使代码有点困惑。在最好的情况下,您可以在加入优化器可能错过的两个结果之前应用额外的过滤:
SELECT t.id, t.date, t.time, t.balance
FROM db1 t
JOIN (SELECT tt.date, MAX(tt.time) as 'maxtime'
FROM db1 tt
WHERE tt.date >= '$dateSelect' -- Here
GROUP BY tt.date) m ON m.maxtime = t.time AND t.date = m.date
WHERE t.date >= '$dateSelect' -- And here
关于mysql - 在 SQL 语句中插入 "WHERE"条件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958178/