我对 SQL 有一些问题(我真的很擅长),也许有人可以帮我找到正确的命令。
表名是enddate 具有以下属性
ID int
old_end_date date
name varchar
我试图通过名称获取表中的最后一个旧日期
我试过这个:
SELECT old_end_date from enddate WHERE id=(SELECT max(id) FROM enddate)
但它没有按名称过滤..
先谢谢你:)
我对 SQL 有一些问题(我真的很擅长),也许有人可以帮我找到正确的命令。
表名是enddate 具有以下属性
ID int
old_end_date date
name varchar
我试图通过名称获取表中的最后一个旧日期
我试过这个:
SELECT old_end_date from enddate WHERE id=(SELECT max(id) FROM enddate)
但它没有按名称过滤..
先谢谢你:)
这是一种方法,也是最简单的方法。这样你就不需要窗口函数了:
select *
from enddate
where name = 'hello'
order by old_end_date desc
limit 1;
,
在 mysql 8 中
你可以做 ROW_NUMBER
SELECT * from (
SELECT *,ROW_NUMBER() OVER (PARTITION BY name ORDER BY old_end_date desc) rn
from enddate
) t
WHERE rn = 1 AND name = "hello"
如果你只想要一个名字
SELECT *
FROM enddate
WHERE name = "hello"
ORDER BY old_end_date DESC
LIMIT 1;