我正在尝试执行以下查询:
UPDATE table1 SET column1 = NULL
WHERE column1 = (SELECT column1
FROM table1
WHERE id = @id)
在MySQL服务器上,但我收到以下错误消息:
“错误代码:1093。您无法在FROM子句中为更新指定目标表'table1'”
这适用于Microsoft SQL Server。关于如何让它在MySQL上工作的任何想法?
由于
答案 0 :(得分:1)
在内部查询中添加额外的SELECT
。由于您从a
而不是table1
进行选择,因此这将作为“不同”的表:
UPDATE table1
SET column1 = NULL
WHERE column1 = (
SELECT column1 FROM (
SELECT column1
FROM table1
WHERE id = @id
)a);
答案 1 :(得分:0)
SET @column1 = (SELECT column1
FROM table1
WHERE id = @id)
UPDATE table1
SET column1 = NULL
WHERE column1=@column1
答案 2 :(得分:0)
在我的头顶,你可以尝试一些事情:
1)尝试给每个table1使用一个别名 2)使用'in'而不是'=',因为你可以从select
中获得多个结果UPDATE table1 t1 SET t1.column1 = NULL WHERE t1.column1 IN (SELECT t2.column1 FROM table1 t2 WHERE id = @id)
3)失败了,也许使用临时表?