如何修复sqlstate[21000]:基数冲突:1241操作数应包含1列

e5nszbig  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(472)

我在运行以下代码时遇到一个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搜索子查询。
另一件事是,我可能需要根据距离(自定义)或创建的时间(默认)排序搜索结果

ttp71kqs

ttp71kqs1#

问题是 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
       )

相关问题