2015-04-01 118 views
-2
'SELECT * FROM (SELECT * FROM t1 
      RIGHT OUTER JOIN t2 ON t1.wid = t2.wid 
      WHERE t2.wid IS NULL) 
      LIMIT ' . $number; 

此SQL行不会给出一行,我不知道原因。 t1满了行,而t2是空表。如何在MySQL中进行正确的外连接?

+0

因为你正在做的'在该表中没有数据右外join'。如果你想获得table1中的所有行,则执行'Left outer Join'。 – 2015-04-01 08:11:17

+0

我必须离开吗?随着离开它也不能正常工作 – Karmen 2015-04-01 08:12:26

回答

0

既然你需要做一个LEFT OUTER JOIN检索排在t1

您还需要避免重复的列名在内部结果你让外部选择之前,如SELECT t1.*

你也可能需要给一个别名派生表内选择,例如,t3 ...

SELECT t3.* FROM (
    SELECT t1.* FROM t1 
    LEFT OUTER JOIN t2 ON t1.wid = t2.wid 
    WHERE t2.wid IS NULL) 
AS t3; 
+0

t3会是什么? – Karmen 2015-04-01 08:44:01

+0

t3是给出内部选择结果的任意表别名,它随后用于通过外部选择引用中间结果。 – 2015-04-01 08:45:45