Mysql 错误1093。你可以';t指定目标表';ps#u order#u history';for update in FROM子句

Mysql 错误1093。你可以';t指定目标表';ps#u order#u history';for update in FROM子句,mysql,mysql-error-1093,Mysql,Mysql Error 1093,我一直在寻找,但我仍然不明白为什么它是错的。我检查了子查询,它们只返回1行 UPDATE ps_order_history SET id_order_state = 18 WHERE id_order = ( SELECT max(p.id_order) FROM ps_orders p INNER JOIN ps_order_detail d ON d.id_order = p.id_order INNER JOIN ps_order_history oh

我一直在寻找,但我仍然不明白为什么它是错的。我检查了子查询,它们只返回1行

UPDATE ps_order_history

SET id_order_state = 18

WHERE id_order = 
(
    SELECT max(p.id_order)
    FROM ps_orders p
    INNER JOIN ps_order_detail d ON d.id_order = p.id_order
    INNER JOIN ps_order_history oh ON oh.id_order = p.id_order
    WHERE d.product_name = "Academia Mastermaq" 

    AND p.id_customer = 
    (
        SELECT id_customer
        FROM ps_customer
        WHERE firstname = "Cristiano"
        AND lastname = "Ferreira dos Santos"
        LIMIT 1
    )
)

Error Code: 1093. You can't specify target table 'ps_order_history' 
for update in FROM clause

谢谢

现在我知道我不能在子查询中加入我的更新表。谢谢你


无法更新正在选择的表。e、 g.您的更新正在处理
ps\u order\u history
,您正在从
ps\u order\u history
中选择WHERE子选择中的一个关联字段。我明白了。谢谢,我解决了这个问题。
UPDATE ps_order_history h
INNER JOIN ps_order_detail d ON d.id_order = h.id_order

SET h.id_order_state = 15

WHERE d.product_name = "Academia Mastermaq" 
AND h.id_order = 
(
    SELECT max(p.id_order)
    FROM ps_orders p
    /*INNER JOIN ps_order_detail d ON d.id_order = p.id_order
    INNER JOIN ps_order_history oh ON oh.id_order = p.id_order*/


    WHERE p.id_customer = 
    (
        SELECT id_customer
        FROM ps_customer
        WHERE firstname = "Cristiano"
        AND lastname = "Ferreira dos Santos"
        LIMIT 1
    )
)