2010-11-14 54 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