我要更新项目表中的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'进行更新
答案 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
);
这里最好的解决方案可能是使用一系列联接重写您的更新。但是,在没有看到您的表定义的情况下,目前我无法冒险给出答案。