Mae*_*024 5 sql sql-server select
我有一张桌子
id f1
--------------
1 2000-01-01
1 2001-01-01
1 2002-01-01
1 2003-01-01
Run Code Online (Sandbox Code Playgroud)
我想在一行中说出最新的3个日期
CREATE TABLE Test
(
id INT NOT NULL,
f1 DATETIME NOT NULL,
)
INSERT INTO Test (id, f1) VALUES (1, '1/1/2000')
INSERT INTO Test (id, f1) VALUES (1, '1/1/2001')
INSERT INTO Test (id, f1) VALUES (1, '1/1/2002')
INSERT INTO Test (id, f1) VALUES (1, '1/1/2003')
SELECT T1.* FROM Test as T1
Run Code Online (Sandbox Code Playgroud)
正在尝试类似的东西
SELECT T1.*,T2.*
FROM Test AS T1
LEFT OUTER JOIN Test AS T2 ON T1.id = T2.id AND (T2.f1 > T1.f1)
Run Code Online (Sandbox Code Playgroud)
虽然我不确定如何将它们排成一行,但您可以从以下开始:
SELECT * FROM Test ORDER BY f1 DESC LIMIT 3
Run Code Online (Sandbox Code Playgroud)
这应该会给你一个类似的结果:
id f1
1 2003-01-01
1 2002-01-01
1 2001-01-01
Run Code Online (Sandbox Code Playgroud)
不过,将它们排成一行可能会有点困难......
在 sql server 中你可以这样做select top 3 * from Test order by f1 desc。其他 DBMS 也有类似的功能,例如 MySql limit、Oraclerownum等。