[英]How to select rows with max values on a certain column
例如,我有
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本身則可能更好。
根據我的理解,問題不是查詢本身,而是“繁瑣”的寫表tab1。 我建議你create view tab1
,然后使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.