#1241-操作数应包含1列更新用例

问题描述

尝试此操作时,我始终遇到此错误

update table1
set value1="apple"
where id IN (
select * table1_table2 where value2= "juice"
)

解决方法

正如已经指出的那样,问题出在使用SELECT *的子查询中,该子查询选择两个或更多列。我建议在这里使用EXISTS逻辑:

UPDATE table1 t1
SET value1 = 'apple'
WHERE EXISTS (SELECT 1 FROM table1_table2 t12
              WHERE t12.some_id = t1.id AND t2.value = 'juice');

此答案假定您要与table1_table2进行比较的table1#id中的列称为some_id

,

您不能在子句中选择多列

update table1
set value1="apple"
where id IN (
select id from table1_table2 where value2= "juice"
)