【问题标题】:Left join on two tables with different conditions on part of table data对部分表数据具有不同条件的两个表进行左连接
【发布时间】:2015-07-30 01:05:30
【问题描述】:

我想使用左连接来连接两个表。我想将一个条件放在数据的一部分上,将另一个条件放在其余数据上。很混乱,我举个例子解释一下:

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

我想将表 a 与表 b 进行左连接。我想根据 Date 和 ID if Date1 并基于 just 来设置表 a left joins 与表 b 的条件日期 if Date1 > '2015-04-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)

我无法得到答案。 谢谢,

【问题讨论】:

    标签: mysql join left-join


    【解决方案1】:

    你可以将这个条件表示为:

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

    【讨论】:

    • 谢谢戈登!!它起作用了..你是救世主... :)
    【解决方案2】:
    select * 
    from a 
    left join b
    on a.ID = b.ID
    and a.Date = b.Date1
    where b.Date1 > '2015-04-30';
    

    【讨论】:

    • 我认为这将首先基于两个条件加入,然后将 where 条件放在它上面。
    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多