更新共享主人的宠物数据时遇Error Code:1241错误求助
修正SQL语句解决Error Code: 1241问题
报错原因很明确:你写的嵌套子查询里,最内层的SELECT返回了Phone_owner和Total两列数据,但IN操作符只允许右侧子查询返回单列值,所以触发了Operand should contain 1 column(s)错误。
下面是几种可行的修正方案:
方案一:调整嵌套子查询的返回列
只保留Phone_owner列作为IN操作符的匹配值:
update Pets set multiple = 1 where Phone_owner in ( SELECT Phone_owner FROM ( SELECT Phone_owner, COUNT(*) Total FROM Pets GROUP BY Phone_owner HAVING COUNT(*) > 1 ) a );
方案二:简化子查询结构(更高效简洁)
去掉多余的嵌套层,直接用单层子查询返回目标列:
update Pets set multiple = 1 where Phone_owner in ( SELECT Phone_owner FROM Pets GROUP BY Phone_owner HAVING COUNT(*) > 1 );
可选方案:用JOIN方式实现更新(大场景性能更优)
如果数据量较大,使用JOIN的更新方式通常比IN子查询效率更高:
UPDATE Pets p JOIN ( SELECT Phone_owner FROM Pets GROUP BY Phone_owner HAVING COUNT(*) > 1 ) o ON p.Phone_owner = o.Phone_owner SET p.multiple = 1;
内容的提问来源于stack exchange,提问作者Skavius
相关产品推荐
相关产品推荐

