UPDATE和MIN SQL查询

时间:2016-04-25 12:27:56

标签: mysql sql

我要更新列的MIN值,但似乎无法使我的语法工作。 我一直收到错误  #1093 - 您无法在FROM子句中为更新指定目标表'turcare_turutstyr'

我的查询是

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

我在哪里做错了?

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

答案 2 :(得分: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 )