如何修复 SQLSTATE [21000]:违反基数:1241 操作数应包含 1 列

How to fix SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

当 运行 以下代码时,我收到 sql 错误。我是 SQL 的新手。所以,如果这是一个愚蠢的问题,请忽略。以下是我的 SQL 查询 return 一些用户基于他们的位置

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:

  1. 由于平台的内置数据库架构,我只能通过 where 子句使用半径搜索子查询。
  2. 另一件事是我可能必须根据距离(自定义)或根据 time_created(默认)
  3. 对搜索结果进行排序

问题是 IN 子查询 returns 多于一列。因此,将距离计算移动到 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
       )