mysql - 如何修复 SQLSTATE[21000]:基数违规:1241 操作数应包含 1 列
问题描述
运行以下代码时出现 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 列
PS:
- 由于平台的内置数据库架构,我只能通过 where 子句使用半径搜索子查询。
- 另一件事是我可能必须根据距离(自定义)或基于 time_created(默认)对搜索结果进行排序
解决方案
问题是IN
子查询返回多于一列。因此,将距离计算移至where
子句:
u.id IN (SELECT id
FROM users_geo_data
WHERE (6371 * acos(
cos( radians(9.9894229) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(76.57897489999999) ) + sin( radians(9.9894229) ) * sin( radians( latitude ) ) < 20
)
推荐阅读
- javascript - Class.method 不是使用 ES6 类的函数
- python - 为什么我不能在主窗口中显示多个小部件?
- python - 更改马赛克图的默认颜色
- php - 如何从 Slim 3 框架中的任何 Uri 获取参数?
- java - Eclipselink 类“javax.persistence.PersistenceUtil”的签名者信息与同一包中其他类的签名者信息不匹配
- ios - 应用程序包 ID 是否需要域才能提交到应用商店?
- oauth-2.0 - 使用密码授权从 Azure AD 获取访问令牌以进行自动化测试
- javascript - 如何使用 Javascript 中的 Fetch API 加载 ttf-fontfiles?
- sas - (1) 创建工作流程,(2) 复制粘贴程序表和 (3) 特定程序(表)的动作 - sas
- javascript - SVG到PNG没有宽度属性