2011-08-28 42 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

相关问题