左连接两个表,在表数据的一部分上具有不同的条件

时间:2015-07-30 01:05:30

标签: mysql join left-join

我想使用左连接加入两个表。我想把一个条件放在数据的一部分而另一个条件放在其余的数据上。这令人困惑,让我用一个例子来解释:

Table  - a
 Date        ID    name
2015-04-30  Y235J   P54
2015-04-30  Y237F   P54
2015-04-30  Y234A   P54
2015-04-30  Y235    P54
2015-04-30  Y239    P54
2015-04-30  Y297    P54
2015-04-30  L234    P54
2015-04-30  L236    P54
2015-04-30  M234    P54
2015-04-30  M237    P54
2015-04-30  M239    P54
2015-04-30  M238    P54
2015-05-31      
2015-06-30      
2015-07-31      
2015-08-31      
2015-09-30      
2015-10-31      

Table -b

Date1        ID1 
2015-04-30  Y235
2015-04-30  Y239
2015-04-30  L234
2015-04-30  M237
2015-04-30  M239
2015-05-31  B435
2015-05-31  B486
2015-06-30  B435
2015-06-30  B486
2015-06-30  B477
2015-07-31  G456
2015-07-31  G345
2015-07-31  B486
2015-07-31  B477

我想用表b做左连接表a。我想根据日期和ID,如果Date1< =' 2015-04-30' ,将表格左连接的条件与表格b放在一起基于日期,如果Date1> ' 2015年4月30日'

请告诉你如何处理这种情况

    Select * from a left joins b (If b.Date1 <= '2015-04-30' then on 
a.Date = b.Date1 and a.ID = b.ID else on a.Date = b.Date1)

我无法得到答案。 谢谢,

2 个答案:

答案 0 :(得分:0)

您可以将此条件表达为:

Select *
from a left join
     b 
     on a.Date = b.Date1 and
        (b.Date1 > '2015-04-30' or  and a.ID = b.ID)

答案 1 :(得分:0)

select * 
from a 
left join b
on a.ID = b.ID
and a.Date = b.Date1
where b.Date1 > '2015-04-30';