2010-11-14 53 views
5

如果內部聯接連接需要有一個行存在,什麼是它,而不必做NOT EXISTS子查詢相反?相對內與EXIST要求

我取代

OUTER JOIN topic_read_assoc ON (
topic_read_assoc.topic_id = topic.id AND 
member_id = member_id = ".$this->tru->application->currentMember->getId()." 
) 

,它不是生產相同的結果作爲第一個查詢(工作)

+0

左外連接? – mxmissile 2010-11-14 06:16:48

回答

10

OUTER JOIN with a WHERE field IS NULL

實施例:

SELECT A.name FROM A INNER JOIN B on A.id = B.id

選擇一個其ID字段存在B中

瑜這些名字:

SELECT A.name FROM A OUTER JOIN B on A.id = B.id WHERE B.id IS NULL

選擇一個其ID字段存在B中的名字

+2

而確切的答案是左外連接 – 2010-11-14 06:23:23

+0

是啊,我是依靠外部聯接是左外連接。但是隻有那些不存在的東西,你仍然需要空檢查。您也可以通過Right Outer Join獲得相同的結果,但空檢查必須更改。 – Aishwar 2010-11-14 06:27:18

-1

我覺得選擇在外部聯接是緩慢的,因爲DBMS離開參加第一,然後右鍵加入和刪除重複rows.So我建議你選擇左邊加入,那麼正確的加入,使intersect.It最好不要運行任何加入,因爲視圖可是沒有索引。

+1

你不知道的DBMS做什麼。它不必這樣做。 – EJP 2010-11-14 07:16:39