我在运行以下代码时遇到一个sql错误。我是sql的新手。所以,如果这是一个愚蠢的问题,请忽略。下面是我的sql查询,它根据用户的位置返回一些用户
SELECT DISTINCT e.* FROM users u WHERE (u.id IN (SELECT id,
(6371 * acos(
cos( radians(9.9894229) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(76.57897489999999) ) + sin( radians(9.9894229) ) * sin( radians( latitude ) )
)
)
AS distance
FROM users_geo_data
HAVING distance < 20
)) ORDER BY u.time_created desc, u.id desc LIMIT 10
但我说的是错误的
sqlstate[21000]:基数冲突:1241操作数应包含1列
附言:
由于平台的内置db架构,我只能通过where子句使用radius搜索子查询。
另一件事是,我可能需要根据距离(自定义)或创建的时间(默认)排序搜索结果
1条答案
按热度按时间ttp71kqs1#
问题是
IN
子查询返回多个列。因此,将距离计算到where
条款: