运行此查询时出错:#1093-您无法在FROM子句中指定用于更新的目标表“项目”

时间:2018-12-09 14:04:57

标签: mysql

我要更新项目表中的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 :(得分: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
);

这里最好的解决方案可能是使用一系列联接重写您的更新。但是,在没有看到您的表定义的情况下,目前我无法冒险给出答案。