如何从表格中获得多个最高值?

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)

Jon*_*han 5

虽然我不确定如何将它们排成一行,但您可以从以下开始:

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)

不过,将它们排成一行可能会有点困难......


Kla*_*sen 3

在 sql server 中你可以这样做select top 3 * from Test order by f1 desc。其他 DBMS 也有类似的功能,例如 MySql limit、Oraclerownum等。