nde*_*cca 3 mysql sql aggregate-functions
桌子 :
a | b
1 | 15
2 | 10
3 | 20
4 | 30
Run Code Online (Sandbox Code Playgroud)
询问:
SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3
Run Code Online (Sandbox Code Playgroud)
将返回 18.75 而不是预期的 15。
如何更改查询以获得我的预期结果(AVG有限行的值)?
您需要使用子查询:
SELECT AVG(b)
FROM (SELECT b
FROM table
ORDER BY table.a ASC
LIMIT 3) sub
Run Code Online (Sandbox Code Playgroud)
编辑:
没有子查询的执行顺序是这样的:
对于子查询,执行顺序如下:
更多信息:逻辑查询处理(TOP/OFFSET FETCH 与 LIMIT 相同)。