Mysql 有什么方法可以快速计算MAX()吗?
我正在尝试执行以下查询:Mysql 有什么方法可以快速计算MAX()吗?,mysql,Mysql,我正在尝试执行以下查询: SELECT A.* , (SELECT MAX(B.Date2) FROM Tab2 B WHERE A.ID = B.ID AND A.Date > B.Date2) AS MaxDate FROM Tab A 这是可行的,但是当您有很多行时,运行它需要很多时间。有没有更快的方法可以达到同样的效果 谢谢大家! 编辑: 表dé定义如下: Tab : (dd-mm-yyyy) ID | Date 1 | 19-01-2018 1 |
SELECT
A.*
, (SELECT MAX(B.Date2) FROM Tab2 B WHERE A.ID = B.ID AND A.Date > B.Date2) AS MaxDate
FROM
Tab A
这是可行的,但是当您有很多行时,运行它需要很多时间。有没有更快的方法可以达到同样的效果
谢谢大家!
编辑:
表dé定义如下:
Tab : (dd-mm-yyyy)
ID | Date
1 | 19-01-2018
1 | 14-01-2018
2 | 18-02-2019
3 | 20-03-2019
Tab2:
ID | Date2
1 | 10-01-2018
1 | 15-01-2018
1 | 20-01-2018
2 | 15-02-2019
2 | 21-02-2019
3 | 25-03-2019
我希望我的查询返回:
ID | Date | MaxDate
1 | 19-01-2018 | 15-01-2018
1 | 14-01-2018 | 10-01-2018
2 | 18-02-2019 | 15-02-2019
3 | 20-03-2019 | NULL
谢谢 这对我来说是意外的,但这个查询起了作用:
SELECT
A.ID
, A.Date
, MAX(B.Date2) AS MaxDate
FROM
Tab A
left outer join Tab2 B
on A.ID = B.ID and A.Date > B.Date2
GROUP BY
A.ID, A.Date
;
我不知道当MAX()的列位于另一个表中时,我们可以将表中的列放入group by中。这对我来说是意外的,但此查询起到了作用:
SELECT
A.ID
, A.Date
, MAX(B.Date2) AS MaxDate
FROM
Tab A
left outer join Tab2 B
on A.ID = B.ID and A.Date > B.Date2
GROUP BY
A.ID, A.Date
;
我不知道,当MAX()的列位于另一个表中时,我们可以将表中的列放入组中。对于性能相关的问题,包括表定义和解释计划是很有帮助的。我用表定义编辑了我的帖子!表定义将包括列名键等。尝试显示创建和剪切粘贴输出对于性能相关的问题,包括表定义和解释计划很有帮助。我用表定义编辑了我的帖子!表定义将包括列名键等。请尝试显示创建并剪切粘贴输出