Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将更新查询与子查询相结合?_Mysql_Sql_Subquery - Fatal编程技术网

Mysql 如何将更新查询与子查询相结合?

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); 但是这个查询给

在我的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);
但是这个查询给了我以下错误:

不能在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' ;
可能的副本:可能的副本: