首页 > 解决方案 > 查询错误 (1241):操作数应包含 1 列

问题描述

如何修复此错误?

此查询返回错误:查询中的错误 (1241):操作数应包含 1 列

SELECT uti_id, uti_nome FROM utilizador WHERE uti_escola=1 AND uti_id IN 
(SELECT DISTINCT ens_utiid_escola, SQRT(POW(69.1 * (uti_latitude - ?), 2) + POW(69.1 * (? - uti_longitude) * COS(uti_latitude / 57.3), 2)) * 1.609344 AS distance
FROM utilizador LEFT OUTER JOIN ensino ON uti_id=ens_utiid WHERE uti_estado=1
AND uti_tipo=1 HAVING distance < ?) ORDER BY uti_nome

标签: sqlmariadb

解决方案


错误来自查询的这一部分:

uti_id IN (SELECT DISTINCT ens_utiid_escola, SQRT(POW(69.1 * (uti_latitude - ?), 2) + POW(69.1 * (? - uti_longitude) * COS(uti_latitude / 57.3), 2)) * 1.609344 AS distance

首先,您不需要select distinctin子查询中。其次,错误是因为您有两行。所以如果你想使用这个逻辑:

uti_id IN (SELECT ens_utiid_escola
           FROM . . .
          )

然后你需要distance在你使用它的地方重复表达式。


推荐阅读