mysql - 在 SQL 语句中插入 "WHERE"条件的位置

标签 mysql

我有以下 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/

相关文章:

php - 分页系统总是缺少 1 个结果

mysql - 当@variable 被添加到 mysql 查询时,Vb.net/Mysql 抛出 fatal error

mysql - 如何为数十亿行和数百GB的大型表配置mysql

mysql - SQL 语法错误 : Can anyone see an issue here?

php - 更新数据库中的多条记录,使其值(value)不断增加

php - Session 和 mysql_query 不向表中插入数据

php - 如果数据库为空,如何添加一条数据?

MySQL 5.7 : Why are 38% of queries missing from the slow query log?

MySQL 'group by' 与 'left join' 丢弃一些条目

c# - 将一个表的所有行复制到另一个表