gpt4 book ai didi

mysql - 如何在不使用子查询的情况下获得具有 max(time) 的适当列?

转载 作者:行者123 更新时间:2023-11-29 09:48:20 25 4
gpt4 key购买 nike

我有下表和值:

mysql> select * from test;
+------+-------+------------+
| id | link | time |
+------+-------+------------+
| 1 | link1 | 2019-03-04 |
| 1 | link2 | 2019-03-05 |
| 1 | link3 | 2019-03-06 |
| 2 | link3 | 2019-03-07 |
| 2 | link4 | 2019-03-07 |
+------+-------+------------+

我想在时间值为最大值时获取列idlink,我可以使用子查询来完成它:

mysql> select B.id, B.link from test B, (select id, max(time) as time 
from test group by id) A where A.time = B.time and A.id = B.id;
+------+-------+
| id | link |
+------+-------+
| 1 | link3 |
| 2 | link3 |
| 2 | link4 |
+------+-------+

我不知道如何在不使用子查询的情况下完成它,任何建议将不胜感激!

另一个:

我想要得到:

+------+-------+
| id | link |
+------+-------+
| 1 | link3 |
| 2 | link3 |
+------+-------+

或者

+------+-------+
| id | link |
+------+-------+
| 1 | link3 |
| 2 | link4 |
+------+-------+

我该怎么办?

最佳答案

使用相关子查询

select a.* from test a
where (a.time,a.link) in(select max(time),max(link) from test b where a.id=b.id)

如果你的版本是mysql 8.0+然后使用row_number()

select * from (
select a.*,row_number()over(partition by a.id order by a.time desc) rn
from test a
) b where b.rn=1

关于mysql - 如何在不使用子查询的情况下获得具有 max(time) 的适当列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254032/

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