【问题标题】:UPDATE and MIN SQL QueryUPDATE 和 MIN SQL 查询
【发布时间】:2016-04-25 20:36:33
【问题描述】:

我正在尝试更新列的 MIN 值,但似乎无法使我的语法正常工作。 我不断收到错误
#1093 - 您不能在 FROM 子句中指定目标表 'turcare_turutstyr' 进行更新

我的查询是

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

我哪里做错了?

【问题讨论】:

  • UPDATE tableName SET solgt = true WHERE produktid IN ( select * from ( SELECT min(produktid) FROM tableName WHERE artnr = '1234' AND solgt = false ) TMP )
  • 是“tableName”turcare_turutstyr?真的是风景吗?
  • 非常感谢。我不敢相信我一直走错路..

标签: mysql sql


【解决方案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;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      感谢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 )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-11
        • 2018-04-26
        • 2021-11-29
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 2017-01-01
        相关资源
        最近更新 更多