比如我有
tab1:
att1|att2
A|3
B|4
C|3
D|4
E|1
F|2
我想要
B|4
D|4
我知道我可以用
SELECT att1 att2
FROM tab1 as T
WHERE T.att2 =
(
SELECT MAX(att2) FROM tab1;
}
我想知道是否有更聪明的方法来做到这一点。 B/c如果需要复杂的查询才能得到tab1,写两遍很麻烦。 顺便说一下,我正在使用 Sqlite。
最佳答案
我原来的回答是:
SELECT att1, att2
FROM tab1
ORDER BY att2 DESC LIMIT 0,1;
抱歉,如果有多个记录具有最大值,那将不起作用。这是另一个答案:
SELECT t1.att1, t1.att2
FROM tab1 AS t1
LEFT JOIN tab1 AS t2
ON t1.att2 < t2.att2
WHERE t2.att1 IS NULL;
这种形式是否比作者提到的嵌套 SELECT 更有效是值得怀疑的,但如果 tab1 是一个 select 本身可能会更好。
关于sql - 如何选择某一列上具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058721/