任何人都可以告诉我一个在mysql中订购结果的问题
问题
无法通过距离
以外的任何列进行排序SELECT * , (
(
(
ACOS( SIN( (
'56.3168322' * PI( ) /180 ) ) * SIN( (
`lat` * PI( ) /180 )
) + COS( (
'56.3168322' * PI( ) /180 )
) * COS( (
`lat` * PI( ) /180 )
) * COS( (
(
'-5.414989099999957' - `lng`
) * PI( ) /180 )
)
)
) *180 / PI( )
) *60 * 1.1515 * 1.609344
) AS `distance`
FROM `incidents`
HAVING `distance` <=3
ORDER BY `distance` ASC
LIMIT 0 , 30
当我尝试根据date_incident行中的日期对列进行排序时,例如
SELECT * , (
(
(
ACOS( SIN( (
'56.3168322' * PI( ) /180 ) ) * SIN( (
`lat` * PI( ) /180 )
) + COS( (
'56.3168322' * PI( ) /180 )
) * COS( (
`lat` * PI( ) /180 )
) * COS( (
(
'-5.414989099999957' - `lng`
) * PI( ) /180 )
)
)
) *180 / PI( )
) *60 * 1.1515 * 1.609344
) AS `distance`
FROM `incidents`
HAVING `distance` <=3
ORDER BY `date_incidents` ASC
LIMIT 0 , 30
在上面它没有排序但仍然返回结果。
任何帮助都会很棒。
答案 0 :(得分:1)
标准SQL不允许HAVING
子句命名GROUP BY
子句中未找到的任何列,除非它包含在aggregate function
中。但MySQL允许引用HAVING
中的任何别名1}}子句。例如:
SELECT name, AVG(age) AS a FROM tables
GROUP BY name
HAVING a > 50;