2017-03-16 58 views
3
Delete from post 
where id_post 
in 
( 
    select MIN(id_post) 
    from post 
    where id_owner='2' 
) 

返回: 「你不能指定目標表‘後’的更新在FROM子句」刪除後用最小的ID SQL

我在做什麼錯?

+4

的可能的複製[ MySQL錯誤1093 - 無法在FROM子句中指定目標表進行更新](http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-u PDATE功能於從子句) –

回答

3

問題是,如果你在一個表上執行UPDATE/INSERT/DELETE,你不能在內部查詢中引用該表(然而你可以從該外部表引用一個字段...... )

的解決方案是更換後的實例在子查詢與(選擇MIN(id_post)從交 其中id_owner =「2」),這樣

Delete from post 
where id_post 
in 
( 
    select id_post 
    from (select MIN(id_post) 
    from post 
    where id_owner='2') as A 
) 
0

如何使用ORDER BYLIMIT

Delete p 
    from post p 
    where id_owner = 2 
    order by id_post 
    limit 1; 

注意:不要在數字常量周圍使用單引號。我猜id_owner是數字。