如何在不使用 LIMIT 和 OFFSET 的情况下获得第二高的数字?
How to get the 2nd highest number without using LIMIT and OFFSET?
所以我正在创建一个 table,其中包含一些如下所示的小兵:
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,是否仍然有可能获得第二高,例如小兵的攻击力?
要获得第二高的值,您可以将最大值应用于排除最大值的集合:
select max(atk) from Minion where atk <> (select max(atk) from Minion)
根据您的示例数据,这将 return atk = 75。
但是为什么不在可用时使用限制和偏移等功能?
所以我正在创建一个 table,其中包含一些如下所示的小兵:
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,是否仍然有可能获得第二高,例如小兵的攻击力?
要获得第二高的值,您可以将最大值应用于排除最大值的集合:
select max(atk) from Minion where atk <> (select max(atk) from Minion)
根据您的示例数据,这将 return atk = 75。
但是为什么不在可用时使用限制和偏移等功能?