假設你沒有得到返回的行(你真的不說的問題是什麼,所以我在這裏猜測了一下),我首先想到的是,有在users
沒有行,其中id
是等於$user_id
。
這是這兩個SQL段的基本區別,第二個是user_thread_map
,threads
和users
表的交叉連接。第一個根本不加入users
,所以這就是我要找的問題。
看起來您的user_thread_map
表格是users
和threads
之間的多對多關係。如果這是真的,你確定你有該表中的ID字段之間既相對其他表的外鍵約束,是這樣的:
users:
id integer primary key
name varchar(50)
threads:
id integer primary key
thread_text varchar(100)
user_thread_map:
user_id integer references users(id)
thread_id integer references threads(id)
如果你有這些外鍵約束,應該是不可能的最後得到一個user_thread_map(user_id)
的值,該值沒有相應的users(id)
值。
如果這些限制是不存在,查詢可以告訴你哪些值需要之前立即加入約束是固定的(這點很重要,以防止問題再次發生),是這樣的:
select user_thread_map.user_id
from user_thread_map
left join users
on user_thread_map.user_id = users.id
where users.id is null
您應該發佈整個查詢和表結構。 – 2010-01-03 11:49:04