2013-03-14 38 views
2

這裏的情況添加多個條件: -IF在mysql中聲明加入 - 如果成功的條件

我想加入2個表。比方說表ab

SELECT * 
FROM a 
JOIN b ON a.id = b.id AND b.status = '1' 

這裏的問題是:

b.status = '1' 

b.stage in (1, 3, 5, 6, 8) 

我怎樣才能在ON子句添加這樣的條件

只應增加?

ON a.id = b.id 
CASE 
    IF (b.stage in (1, 3, 5, 6, 8)) 
THEN 
    AND b.status = '1' 
END 
+2

好,你可以隨時使用布爾邏輯繞過這樣一個子句:'AND(b.status ='1'或b.stage NOT IN(1,3,5,6,8))' – Najzero 2013-03-14 12:21:30

+0

問題的輕微變化。 – Sahal 2013-03-14 12:24:32

回答

5

你的條件是邏輯上等同於「要麼階段是不在列表狀態1」:

SELECT * 
FROM a 
JOIN b ON a.id = b.id 
    AND (b.stage not in (1, 3, 5, 6, 8) OR b.status = '1') 
+0

我不能把'不在'那裏。因爲我想要(1,3,5,6,8)也記錄。 – Sahal 2013-03-14 12:22:47

+0

@Sahal它的正確,你想要包括那些,但只有當他們有b.status = 1。它是一個「組合條款」,並符合你的要求從你的問題 – Najzero 2013-03-14 12:24:20

+0

你能更具體嗎?這個查詢正是你所要求的。如果'stage'在列表中,則僅在測試'status = 1'時邏輯上相同。 – Bohemian 2013-03-14 12:24:24