我有一张桌子,如下:
tabl1 :
id name created_on
---- ------ ----------
1 red 2016
2 green 2017
3 blue 2018
并按以下查询
select max(id),
name,
created_on
from tabl1
结果:
id name created_on
--- ---- ----------
3 red 2016
在这里,我正确获取了最大ID,但name和created_on值不在同一行。我如何返回这样的结果:
id name created_on
--- ---- ----------
3 blue 2018
答案 0 :(得分:1)
您应该使用内部连接woth max id检索右行
select * from tabl1
inner join (
select max(id) max_id
from tabl1
) t on t.max_id = tabl1.id
没有适当的group by子句,最新版本的mysql不允许在未声明列名的情况下进行聚集函数的结果,而不是在聚合函数中,在group by子句中,结果是无法预测的版本
答案 1 :(得分:0)
我可能只在这里使用LIMIT
SELECT id, name, created_on
FROM yourTable
ORDER BY id DESC
LIMIT 1;
如果您使用的是MySQL 8或更高版本,那么您将有另一个选择:
SELECT id, name, created_on
FROM
(
SELECT id, name, created_on, ROW_NUMBER() OVER (ORDER BY id DESC) rn
FROM yourTable
) t
WHERE rn = 1;