UPDATE table1 AS t1
INNER JOIN table2 AS t2 ON t1.table1_id=t2.table2_id
SET t1.overview=t2.val
WHERE t1.table1_id=(SELECT table2_id
FROM table2
WHERE table2_id=1);
table2有多个id
值为1,因此它给出了
#1242 - Subquery returns more than 1 row
答案 0 :(得分:0)
您需要DISTINCT
。
UPDATE table1 AS t1
INNER JOIN table2 AS t2
ON t1.table1_id = t2.table2_id
SET t1.overview = t2.val
WHERE t1.table1_id = (SELECT DISTINCT table2_id FROM table2 WHERE table2_id = 1);
如果table2_id
已修复,为什么不要像以下那样使用1:
UPDATE table1 AS t1
INNER JOIN table2 AS t2
ON t1.table1_id = t2.table2_id
SET t1.overview = t2.val
WHERE t1.table1_id = 1;
答案 1 :(得分:0)
如果您确实想将t1.table1_id与多个值进行比较,请使用:
中的而不是 =
UPDATE table1 AS t1
INNER JOIN table2 AS t2 ON t1.table1_id=t2.table2_id
SET t1.overview=t2.val WHERE t1.table1_id
IN ( SELECT xxx FROM table2 WHERE table2_id=1);
顺便说一句,如果您只是从内部查询返回 table2_id ,则可以完全跳过内部查询。
答案 2 :(得分:0)
显然,table2中有超过1条记录具有相同的ID。
但是,如果确定,请将=
运营商更改为in
运营商。
所以这将是你的代码:
UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.table1_id=t2.table2_id SET t1.overview=t2.val where t1.table1_id in ( SELECT table2_id
FROM table2 WHERE table2_id=1);
修改强> 不需要子查询,这是多余的。看看这个:
UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.table1_id=t2.table2_id SET t1.overview=t2.val where table2_id=1;