我有3列(ID,父,值)的一些數據和此查詢:以上與選擇刪除mysql的
SELECT * FROM test WHERE id = (
SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1
);
查詢的偉大工程。
現在我該如何刪除而不是在一個查詢中選擇該ID?
我有3列(ID,父,值)的一些數據和此查詢:以上與選擇刪除mysql的
SELECT * FROM test WHERE id = (
SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1
);
查詢的偉大工程。
現在我該如何刪除而不是在一個查詢中選擇該ID?
您無法從表中刪除並從子表中選擇相同的表。
但是,您可以在自聯接中使用該表。
DELETE t1 FROM test t1
INNER JOIN test t2 ON (t1.id = t2.parent)
WHERE t2.id = 2 and t2.value = 'value'
不能使用limit
在加入delete語句不order by
。
這是要麼加入或限制/順序,請選擇。
如果孩子首先被刪除會怎麼樣? – 2011-06-09 18:12:11
@Justin,這隻會刪除t1中的項目。如果需要,MySQL將使用臨時表來保存連接結果集中的值。 – Johan 2011-06-09 18:16:45
我不明白。你從哪裏得到t1和t2?我有一個表測試。 – Alqin 2011-06-09 18:25:03