表格:
a | b
1 | 15
2 | 10
3 | 20
4 | 30
查询:
SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3
返回的结果是18.75,而不是预期的15。
我该如何更改查询以获取我的预期结果(限定行数的AVG
值)?
表格:
a | b
1 | 15
2 | 10
3 | 20
4 | 30
查询:
SELECT AVG(table.b) FROM table ORDER BY table.a ASC LIMIT 3
返回的结果是18.75,而不是预期的15。
我该如何更改查询以获取我的预期结果(限定行数的AVG
值)?
您需要使用子查询:
SELECT AVG(b)
FROM (SELECT b
FROM table
ORDER BY table.a ASC
LIMIT 3) sub
编辑:
没有子查询时,执行顺序如下:
有了子查询后,执行顺序如下:
更多信息:逻辑查询处理 (TOP/OFFSET FETCH与LIMIT相同)。
SELECT AVG(A.b) FROM
(SELECT `table`.b FROM `table` ORDER BY `table`.a ASC LIMIT 3) A;