我怎樣才能使這項工作 - 給我#1093 - 您不能在指定目標表「訂單」的更新FROM子句與選擇子更新語句選擇
Update Orders set flag = 0 where orders_id = (select orders_id from orders ORDER BY orders_id DESC LIMIT 1)
我怎樣才能使這項工作 - 給我#1093 - 您不能在指定目標表「訂單」的更新FROM子句與選擇子更新語句選擇
Update Orders set flag = 0 where orders_id = (select orders_id from orders ORDER BY orders_id DESC LIMIT 1)
你需要把它包在一個子查詢(創建臨時表)
Update Orders
set flag = 0
where orders_id =
(
SELECT x.orders_id
FROM
(
select orders_id
from orders
ORDER BY orders_id DESC
LIMIT 1
) x
)
或
Update Orders
set flag = 0
where orders_id =
(
SELECT x.orders_id
FROM
(
select MAX(orders_id) orders_id
from orders
) x
)
[在DELETE問題上有點類似](http://stackoverflow.com/a/7378713/491243) –
: - 很好,我從來沒有想過它會工作.... Gr8回答:) – Salil
它應該是在你的秒查詢MAX因爲OP是通過desc – AnandPhadke
它看起來像你試圖更新表中的最後一個訂單?嘗試
Update Orders set flag = 0 ORDER BY orders_id DESC LIMIT 1;
MySQL不支持而在子查詢中使用它更新表..
爲什麼會有這樣的負面投票答案,任何人都可以解釋,因爲它工作得很好..? –
是的,我很好奇downvote?它避免了創建臨時表和子選擇,並且只是在1次更新中完成。 – Doon
你能告訴我怎樣才能得到last_insert_id來處理這個更新statemtent,我知道它與ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)有關,但它不適合我! –
嘗試'更新訂單設置標誌= 0其中orders_id =(從選擇的訂單分鐘(orders_id));' – venkatKA