2016-04-25 59 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)