2013-10-22 42 views
0

我有一個表格,裏面有一個房間列表,每個房間都分配了一個房間號碼。我想刪除最高的房間號:SQL DELETE最高值

DELETE FROM rooms WHERE roomNb = (SELECT max(roomNb) FROM rooms LIMIT 1) 

我希望這個工作,但是當我嘗試執行在PHP這個查詢我得到這個mysqli_error:

string(64) "You can't specify target table 'rooms' for update in FROM clause" 
+0

今草頓웃答案是正確的。檢查這個SQL小提琴:http://www.sqlfiddle.com/#!2/79ea1f/2 – thiagobraga

+0

和zamnuts也回答,更簡單,沒有使用JOIN。 – thiagobraga

回答

2

我沒有看到一個理由使用子查詢/加入...爲什麼不只是一個ORDER BY條款後,該行關閉表的頂部轉向?

DELETE FROM rooms ORDER BY roomNb DESC LIMIT 1 
2

嘗試使用加入,

DELETE a 
FROM rooms a 
     INNER JOIN (SELECT max(roomNb) maxroom FROM rooms) b 
      ON a.roomNb = b.maxroom