2016-04-25 90 views
0

正在更新列的MIN值,但似乎无法使我的语法工作。 我不断收到错误
#1093 - 您不能指定目标表“turcare_turutstyr”的更新在FROM子句更新和MIN SQL查询

我查询

UPDATE tableName 
SET solgt = true 
WHERE produktid = (SELECT min(produktid) FROM tableName 
       WHERE artnr = '1234' 
       AND solgt = false) 

我在哪里做错了?

+2

'UPDATE表名 SET solgt =真 WHERE produktid in ( select * from ( SELECT min(produktid)FROM tableName WHERE artnr ='1234' AND solgt = false )TMP )' –

+0

是“tableName”'turcare_turutstyr'?这实际上是一种观点吗? –

+0

非常感谢。我不相信我一直在绕错误的方式.. – Eyrik

回答

1

MySQL不允许您在updatedelete查询中直接使用同一个表两次。那么,它的确如此。一种方法是使用join

UPDATE tableName t JOIN 
     (SELECT min(produktid) as produktid 
     FROM tableName 
     WHERE artnr = '1234' AND solgt = false 
    ) tt 
     ON t.produktid = tt.produktid 
    SET solgt = true; 
1

可能是你的where子句的回报超过1行

UPDATE tableName 
    SET solgt = true 
    WHERE produktid in (SELECT min(produktid) FROM tableName 
        WHERE artnr = '1234' 
        AND solgt = false) 
0

由于juergen d香港专业教育学院解决了这个问题

UPDATE turcare_turutstyr 
SET solgt = true 
WHERE produktid IN (select * from (SELECT min(produktid) 
           FROM turcare_turutstyr 
           WHERE artnr = '1234' 
           AND solgt = false) 
       TMP)