MySql-使用Select更新

MySql-使用Select更新,mysql,sql,sql-update,subquery,Mysql,Sql,Sql Update,Subquery,我需要用select命令更新一个表。这是我目前的疑问: Update T_STATO_CASA Set UTENTE = 'Admin' Where ID_CASA in ( Select ID From T_CASA Where ID_RICHIESTA In (437869, 437233, 437235, 437876)

我需要用select命令更新一个表。这是我目前的疑问:

Update T_STATO_CASA
  Set  UTENTE = 'Admin'
Where ID_CASA in (
                  Select ID 
                    From T_CASA 
                   Where ID_RICHIESTA 
                      In (437869, 437233, 437235, 437876)
                  )
但它返回以下错误:“子查询返回的值超过1。当子查询跟随时,这是不允许的

=,!=,=

或者当子查询用作表达式时。” 如果我单独运行子查询,它将返回4个结果。我的语法错了吗?谢谢

编辑:所有建议使用JOIN的解决方案都会给出语法错误,好像MySql只需要更新集where命令序列。例如,我不能写像这样的东西

update T_STATO_CASA as x
set [...]
where [...]

因为它给了我语法错误:“word AS.Expected SET附近的语法不正确”

原因是子查询将返回多行记录

更合适的方法是使用
JOIN

  UPDATE T_STATO_CASA
    JOIN T_CASA t 
      ON t.id = ID_CASA 
     AND t.ID_RICHIESTA 
      IN (437869, 437233, 437235, 437876)
     SET UTENTE = 'Admin

如果仍要使用子查询,则需要使用
group\u concat
将结果生成一条记录

这是我的案例的正确语法:

UPDATE t_stato_casa x
  JOIN t_casa y
    ON y.id = x.id_casa
   SET x.utente = 'admin'  
 WHERE y.id_richiesta IN(437869, 437233, 437235, 437876)
UPDATE t_stato_casa
SET
UTENTE = 'Admin'
FROM
t_stato_casa AS sc
INNER JOIN T_CASA AS c
ON c.ID = sc.ID_CASA
WHERE
c.ID_RICHIESTA in (437869, 437233, 437235, 437876)

感谢大家。

子查询的使用似乎是多余的——而且b tIt似乎我的答案遇到了相同的MySQL限制,所以我删除了它。然而,其他两个答案都是正确的。