MySql-使用Select更新
我需要用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)
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限制,所以我删除了它。然而,其他两个答案都是正确的。