Mysql查询距离搜索失败
嘿 我的桌子:Mysql查询距离搜索失败,mysql,Mysql,嘿 我的桌子: CREATE TABLE IF NOT EXISTS `USER_SETTING` ( `USER_ID` int(11) NOT NULL, `LATITUDE` float(10,6) NOT NULL DEFAULT '0.000000', `LONGITUDE` float(10,6) NOT NULL DEFAULT '0.000000', `MINAGE` int(11) DEFAULT NULL, `GENDER` varchar(1) DEFA
CREATE TABLE IF NOT EXISTS `USER_SETTING` (
`USER_ID` int(11) NOT NULL,
`LATITUDE` float(10,6) NOT NULL DEFAULT '0.000000',
`LONGITUDE` float(10,6) NOT NULL DEFAULT '0.000000',
`MINAGE` int(11) DEFAULT NULL,
`GENDER` varchar(1) DEFAULT NULL,
`DISTANCE` int(11) DEFAULT NULL,
`MAXAGE` int(11) NOT NULL,
PRIMARY KEY (`USER_ID`)
)
查询:
SELECT
user_id,
LONGITUDE,
LATITUDE,
MINAGE,
MAXAGE,
DISTANCE,
(
6371 * acos(
cos(
radians(47.958153)
) * cos(
radians(LANGITUDE)
) * cos(
radians(LATITUDE) - radians(13.780375)
) + sin(
radians(47.958153)
) * sin(
radians(LANGITUDE)
)
)
) AS range
FROM
USER_SETTING
HAVING
range < 800
ORDER BY
range
LIMIT 0, 20
选择
用户id,
经度,
纬度,
米纳奇,
MAXAGE,
距离,
(
6371*acos(
因为(
弧度(47.958153)
)*cos(
弧度(朗度)
)*cos(
弧度(纬度)-弧度(13.780375)
)+罪(
弧度(47.958153)
)*罪(
弧度(朗度)
)
)
)AS范围
从…起
用户设置
有
范围<800
订购人
范围
限制0,20
问题:
查询不起作用
错误消息:
您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
用户_设置的“近”范围,范围<800按范围排序
第1行的0,20'极限
请帮助您需要添加一个
Group by
子句,以便使用HAVING
,否则使用:
Where range < 800
其中范围<800
具有
仅适用于分组
列。因为我没有注意到您的查询中有任何组,所以我将其修改为使用WHERE
子句
SELECT user_id,
LONGITUDE,
LATITUDE,
MINAGE,
MAXAGE,
DISTANCE,
(6371 * acos( cos( radians(47.958153) ) * cos( radians(LANGITUDE)) * cos(radians(LATITUDE) - radians(13.780375)) + sin(radians(47.958153)) * sin(radians(LANGITUDE)))) AS range
FROM USER_SETTING
WHERE range < 800
ORDER BY range
LIMIT 0 , 20
选择用户标识,
经度,
纬度,
米纳奇,
MAXAGE,
距离,
(6371*acos(弧度(47.958153))*cos(弧度(朗格度))*cos(弧度(纬度)-弧度(13.780375))+sin(弧度(47.958153))*sin(弧度(朗格度)))作为范围
从用户设置
其中范围<800
按范围订购
限制0,20
此演示是我在该主题上看到的最好的演示。我包括工作查询等,以及一般距离计算的性能提示和技巧