SQL查询适用于SQL Server,但不适用于MySQL

时间:2013-12-09 11:14:08

标签: mysql sql

我正在尝试执行以下查询:

UPDATE table1 SET column1 = NULL 
 WHERE column1 = (SELECT column1 
                    FROM table1 
                   WHERE id = @id)

在MySQL服务器上,但我收到以下错误消息:

“错误代码:1093。您无法在FROM子句中为更新指定目标表'table1'”

这适用于Microsoft SQL Server。关于如何让它在MySQL上工作的任何想法?

由于

3 个答案:

答案 0 :(得分:1)

在内部查询中添加额外的SELECT。由于您从a而不是table1进行选择,因此这将作为“不同”的表:

UPDATE table1
SET column1 = NULL
WHERE column1 = (
  SELECT column1 FROM (
    SELECT column1
    FROM table1
    WHERE id = @id
    )a);

sqlfiddle demo

答案 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)失败了,也许使用临时表?