加入两个表并包括所有行,即使没有匹配

时间:2015-07-10 18:55:44

标签: mysql

寻找离开加入2个表并保留左边的所有记录。问题是其他表中不存在其中一个on语句

实施例

  

表1 ID,ClassID,日期,金额

     

表2 ID,CLassID,日期,分数

示例陈述

select 
   Table1.ID, 
   Table1.ClassID, 
   Table1.Date, 
   Table1.Amount, 
   Table2.Score
from Table1
 left join Table2 on Table2.ID = Table1.ID 
      and Table2.ClassID = Table1.ClassID 
      and Table2.Date = Table1.Date

问题是Table1有一个Class2,Table2没有,它将从结果中排除。如果我删除ClassID作为资格,我会得到大量的重复

1 个答案:

答案 0 :(得分:0)

您的缺失值对于分数将为空,因此您必须按照自己喜欢的方式处理,但这样做会有效。

select 
   Table1.ID, 
   Table1.ClassID, 
   Table1.Date, 
   Table1.Amount, 
   ( SELECT Score 
     FROM Table2 
     WHERE ID = Table1.ID 
     and ClassID = Table1.ClassID 
     and Date = Table1.Date ) AS 'Score'
from Table1