Mysql 如何将更新查询与子查询相结合?
在我的Mysql数据库中,我想为使用以下select语句找到的所有记录更新一个字段Mysql 如何将更新查询与子查询相结合?,mysql,sql,subquery,Mysql,Sql,Subquery,在我的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); 但是这个查询给
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);
但是这个查询给了我以下错误:
不能在FROM子句中为update指定目标表“不兼容”
有人知道我怎样才能做到这一点吗?欢迎所有提示 您不需要子查询。您可以使用
internal JOIN
设置条件,将company
表链接到app
表,并链接到company
表的另一个别名
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'
您不需要子查询。您可以使用
internal JOIN
设置条件,将company
表链接到app
表,并链接到company
表的另一个别名
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'
您似乎希望在两列上设置一个条件,因此这有点棘手。如果我正确地遵循逻辑:
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' ;
您似乎希望在两列上设置一个条件,因此这有点棘手。如果我正确地遵循逻辑:
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' ;
可能的副本:可能的副本: