首页 文章

运行此查询时出错:#1093 - 您可以't specify target table ' items'在FROM子句中进行更新

提问于
浏览
0

我想更新items表中的handling_status_id

UPDATE items
SET handling_status_id=2
WHERE id = (
  SELECT id 
  FROM  `items` 
  INNER JOIN cache_items_auth ON items.id = cache_items_auth.item_id
  WHERE auth_id =2
    AND creation_date >='%2018-12-09 06:01%'
    AND  `category_id` =12151
  ORDER BY creation_date ASC
  LIMIT 1
)

我收到此错误:#1093 - 您无法在FROM子句中为更新指定目标表'items'

1 回答

  • 0

    要立即修复,您可以包装子查询以强制MySQL在执行更新之前实现它:

    UPDATE items
    SET handling_status_id = 2
    WHERE id = (
        SELECT id FROM
        (
            SELECT id
            FROM items
            INNER JOIN cache_items_auth
                ON items.id = cache_items_auth.item_id
            WHERE auth_id = 2 AND
                  creation_date >= '2018-12-09 06:01' AND
                  category_id = 12151
            ORDER BY creation_date
            LIMIT 1
        ) x
    );
    

    这里最好的解决方案可能是使用一系列连接重写您的更新 . 但是,如果没有看到你的表定义,我现在无法冒昧地回答 .

相关问题