我需要更新一个带有选择内容的表。到目前为止,这是我的查询:
Update T_STATO_CASA
Set UTENTE = 'Admin'
Where ID_CASA in (
Select ID
From T_CASA
Where ID_RICHIESTA
In (437869, 437233, 437235, 437876)
)
但是它返回以下错误:“子查询返回了多个值。当子查询跟随时,不允许这样做
=,!=,<,<=,>,> =
或将子查询用作表达式时。” 如果我单独运行子查询,它将返回4个结果。我的语法错误吗?谢谢。
编辑:所有使用JOIN的建议解决方案都给我语法错误,好像MySql只期望update-set-where命令序列一样。例如,我不能写类似
的东西update T_STATO_CASA as x
set [...]
where [...]
因为它给了我语法错误:“ AS字附近的语法不正确。预期设置”
答案 0 :(得分:2)
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)
答案 1 :(得分:1)
原因是您的子查询将返回多条记录
更合适的方法是改用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_concat
将结果归为一条记录
答案 2 :(得分:0)
这是适合我的情况的正确语法:
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)
谢谢大家。