例如:
name | weight
jon 100
jane 120
joe 130
我如何只返回体重最大的人的姓名?
答案 0 :(得分:78)
SELECT name FROM tbl ORDER BY weight DESC LIMIT 1
比其他答案更高效,只产生一行。
答案 1 :(得分:36)
使用此:
select name
from tbl
where weight = (select max(weight) from tbl)
答案 2 :(得分:2)
ORDER BY DESC将带有空值的行放在顶部。
避免返回与空值相对应的结果:
SELECT name FROM tbl WHERE weight = (SELECT MAX(weight) FROM tbl);
注意:如果多人的权重等于最大权重,则此查询将返回多个结果。要只抓取一个,请在查询末尾添加LIMIT 1
。
致谢和更多信息:
Why do NULL values come first when ordering DESC in a PostgreSQL query?
答案 3 :(得分:0)
如果您需要查找多行,例如每个人最大体重的日期:
name | weight | day
don 110 1
don 120 20
don 110 30
joe 90 1
joe 80 15
joe 85 30
即您想获得"don | 120 | 20"
的“唐”,而想要"joe | 90 | 1"
的乔,则可以这样写:
SELECT (array_agg(name ORDER BY weight DESC))[1], max(weight), (array_agg(day ORDER BY weight DESC))[1] FROM tbl