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

此演示是我在该主题上看到的最好的演示。我包括工作查询等,以及一般距离计算的性能提示和技巧