如何在不使用LIMIT和OFFSET的情况下获得第二高的数字?

时间:2016-04-17 12:43:13

标签: sql sqlite greatest-n-per-group

所以我创建了一个包含一些看起来像这样的小兵的表:

CREATE TABLE Minion(MinionID varchar(10), gold int, Atk int, def int);

的值为:

INSERT INTO Minion VALUES ('min001', 15, 5, 20);
INSERT INTO Minion VALUES ('min002', 20, 7, 30);
INSERT INTO Minion VALUES ('min003', 18, 8, 17);
INSERT INTO Minion VALUES ('min004', 30, 15, 100);
INSERT INTO Minion VALUES ('min005', 5, 3, 9);
INSERT INTO Minion VALUES ('min006', 60, 23, 150);
INSERT INTO Minion VALUES ('min007', 10, 8, 20);
INSERT INTO Minion VALUES ('min008', 65, 40, 250);
INSERT INTO Minion VALUES ('min009', 300, 75, 550);
INSERT INTO Minion VALUES ('min010', 300, 65, 600);
INSERT INTO Minion VALUES ('min011', 300, 80, 400);

所以我想知道,如果没有LIMIT和OFFSET,仍有可能获得第二高的,例如仆从们?

1 个答案:

答案 0 :(得分:2)

要获得第二个最高值,您可以将max应用于排除最大值的集合:

select max(atk) from Minion where atk <> (select max(atk) from Minion)

使用您的样本数据,这将返回atk = 75。

但是为什么不使用限制和偏移等功能?