2013-11-27 35 views
0
I have Two tables : 
    Table1, Table2 

我必須寫這對在這些表<> 0條件 基於 三列內加入一個SQL查詢。 我的條件MySQL的內部聯接基於非空列

if(table1.ID != 0), then inner join on table1.ID = table2.ID else, 

    if(table1.MemberID != 0), then inner join on table1.MemberID = table2.MemberID else, 

    inner join on table1.PersonID = table2.PersonID 
+0

您確定您需要內部連接嗎? 左連接可以處理你不存在的值的情況 –

+0

@Goran Stuc:是的,在這種情況下我需要內連接。我必須匹配這兩個領域。 –

+0

爲什麼你不使用連接與OR的每個條件 – sumit

回答

1

您可以使用條件語句(情況下,例如當)在連接語句。

select t1.*, t2.* 
from table1 t1 
inner join table2 t2 on 
      (case when 
       t1.ID != 0 
       then t1.ID =t2.Id 
       else 
       case when t1.MemberId !=0 
         then t1.MemberId = t2.MemberId 
         else 
          t1.PersonId = t2.PersonId 
        end 
      end) 

看到SqlFiddle

0

這應該工作。

select * 
from Table1, Table2 
where table1.Personid = table2.personId 
and (((Table1.id != 0) and (Table1.id = table2.Id)) 
or ((Table1.memberid != 0) and (Table1.memberid = table2.memberId)))