2011-08-28 11 views
0

我想加入幾個表,但我只想從 線程表中刪除行。我得到以下SQL,顯示我想要刪除的行。在連接多個表的SQL刪除中,是否所有表都會受到影響?

SELECT * FROM threadsread tr, threads t WHERE 
tr.tid=t.tid and tr.uid=2111 and t.fid=30 

Mysql docs它指出: 「*對於多表的語法,刪除從每個tbl_name滿足條件的行。*」

獲取上述選擇的刪除,將所述線程表也受到影響?

DELETE FROM threadsread tr, threads t 
WHERE tr.tid=t.tid and tr.uid=2111 and t.fid=30 

如果會的話,我怎樣才能得到受影響的線程讀表?

回答

2

在許多(也許是大多數或全部)SQL風格中,您提供的delete語句實際上是無效的。相反使用:

DELETE FROM threadsread tr 
USING threads t 
WHERE tr.tid=t.tid AND tr.uid=2111 AND t.fid=30; 

這使得顯而易見的是,您只是從'FROM'子句中指定的一個表中刪除。

+0

我SQL AS: DELETE FROM'threadsread' TR 使用'threads'噸 凡 tr.tid = t.tid和tr.uid在(2111,2564,2326,2510)和t.fid = 30 我拿出了前綴。我得到了一個「#1109 - MULTI DELETE中的未知表mybb_threadsread」 – Emerson

+0

我嘗試不使用本文提到的別名: http://www.xaprb.com/blog/2006/08/07/how-到寫多表交數據庫刪除與 - 別名合MySQL的/ DELETE FROM'mybb_threadsread' 使用'mybb_threads'噸 凡 mybb_threadsread.tid = mybb_threads.tid和mybb_threadsread.uid在(2111,2564,2325,2510)和mybb_threads.fid = 30 但我仍然得到完全相同的消息... – Emerson

+0

它肯定聽起來像'mybb_threadsread'不是一個表。我最好的猜測:這是一個錯字,或者它不是一張桌子,而是一個視圖,或者其他類似桌子的物體。 (我不知道如果你試圖從視圖中刪除,MySQL是否會以這種方式行事) – Flimzy

相關問題