我不知道问这个问题的确切术语是什么(如果有人可以帮助解决这个问题,将会改进标题),所以将使用一个例子。
对于查询
select max(a), b from some_table
,b
是否来自 a
为最大值的行?如果没有的话,有没有办法不用再次遍历表就可以得到它呢?例如 select a, b from some_table where a = (select max(a) from some_table) limit 1
会得到正确的结果,但(据我所知)会遍历表格两次。
| a | b |
|---+-------|
| 1 | red |
| 1 | red |
| 2 | green |
| 2 | green |
应该产生一个元组:
| 2 | green |
如果您只想要一行,则具有最大
a
值:
select *
from tablename
order by a desc
limit 1