在我的Mysql数据库中,我想为使用此select语句找到的所有记录更新字段fup
:
SELECT ic.hash
FROM incompany as ic, app
WHERE ic.id = app.ic_id;
所以我创建了以下组合查询:
UPDATE incompany
SET fup = 'x'
WHERE hash IN (SELECT ic.hash
FROM incompany as ic, app
WHERE ic.id = app.ic_id);
但是这个查询给了我以下错误:
您无法指定目标表' incompany'用于FROM子句中的更新
有人知道如何让这项工作成功吗?欢迎所有提示!
答案 0 :(得分:2)
你似乎想要两列的条件,所以这有点棘手。如果我正确地遵循逻辑:
UPDATE incompany ic JOIN
(SELECT DISTINCT ic.hash
FROM incompany ic JOIN
app
ON ic.id = app.ic_id
) ica
ON ica.hash = ic.hash
SET fup = 'x' ;
答案 1 :(得分:1)
您不需要子查询。您可以使用INNER JOIN
来设置将incompany
表与app
表以及incompany
表的另一个别名相关联的条件。
UPDATE incompany I
INNER JOIN app A ON I.id = A.ic_id
INNER JOIN incompany I2 ON I.hash = I2.hash
SET I.fup = 'x'