Php COUNT()正在选择表中的行数
下面查询中的MyPhp COUNT()正在选择表中的行数,php,mysql,count,Php,Mysql,Count,下面查询中的MyCOUNT(*)正在选择表users中的行数计数,而不是distance小于50的行数 请告诉我为什么查询选择表users中的行数,而不是距离小于50的行数 提前谢谢 SELECT COUNT(*), ( 6371 * ACOS( COS( RADIANS( 51.61050836267012 ) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS( - 0.23701071739196777
COUNT(*)
正在选择表users
中的行数计数,而不是distance
小于50的行数
请告诉我为什么查询选择表users
中的行数,而不是距离小于50的行数
提前谢谢
SELECT COUNT(*), ( 6371 * ACOS( COS( RADIANS( 51.61050836267012 ) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS( - 0.23701071739196777 ) ) + SIN( RADIANS( 51.61050836267012 ) ) * SIN( RADIANS( latitude ) ) ) )
AS distance
FROM `users`
AS `u`
HAVING distance <=50
选择计数(*),(6371*ACOS(弧度(51.61050836267012))*COS(弧度(纬度))*COS(弧度(经度)-弧度(-0.23701071739196777))+SIN(弧度(51.61050836267012))*SIN(弧度(纬度)))
作为距离
来自“用户”
作为“你”`
有距离有
应通过
表达与组相关。要将行数限制为给定的标准,请使用,其中距离具有
对聚合值起作用(例如总和(列)具有特定条件)
在您的情况下,应该使用WHERE
而不是HAVING
HAVING子句不会像count函数的WHERE子句那样对行进行过滤。尝试改用子查询。您遇到了什么错误?或者您的结果如何不正确?计数(*)返回的是15行,而不是距离为distance
的行数不是表users
中的字段名,它只是从(6371*acos(..)函数生成的值是,但是您已经将它用作第二个投影元素的别名,您可以在WHERE
clausePHPMyAdmin中引用它,但它似乎不同意:WHERE子句中的未知列“distance”
它不允许我在WHERE子句中使用distance
,因为它不是字段名