2013-10-24 112 views
-2

部分我的MySQL查詢看起來是這樣的:只有做到「或」如果第一場比賽並不存在

LEFT JOIN edu_experience e ON e.exp_user = u.user_id 
AND e.exp_current = '1' 
OR e.exp_user = u.user_id 
AND e.exp_start = e1.MaxExpStart 
AND e.exp_type != '0' 

不過,我只想做「或」 if語句的:e.exp_user = u.user_id AND e.exp_current = '1'沒」 t匹配。

所以,如果我簡單地做此查詢 - 它的工作原理:

LEFT JOIN edu_experience e ON e.exp_user = u.user_id 
AND e.exp_current = '1' 

但不是在所有情況下,爲什麼我需要的「OR」語句。

+2

如果你的第一條返回true,它匹配的,如果第一條返回false和第二返回true,它也匹配。那麼你的問題在哪裏? –

+0

我認爲你不明白。如果edu_experience中有任何行,其中exp_current等於1,那麼應該簡單地跳過OR(因爲OR將基於其他消耗選擇一行)。所以:如果exp_current = 1,不要做OR。 – FooBar

+0

是e1.MaxExpStart MAX的結果((具有其他名稱的表e).exp_start)?如果是這樣,你可以給exp_start的值賦予上下限嗎? – Taemyr

回答

1

請試試這個:

LEFT JOIN edu_experience e ON (
    e.exp_user = u.user_id 
    AND (
    e.exp_current = '1' 
    OR e.exp_user = u.user_id 
) 
    AND e.exp_start = e1.MaxExpStart 
    AND e.exp_type != '0' 
)