2016-08-11 76 views
1

MySQL(5.7.x):無論如何要在WHERE條件下做三元論證嗎?三態在WHERE條件(MySQL)?

我想基於選擇的值運行和條款:

SELECT DISTINCT p.user_id, eml.template, eml.subject 
     FROM order_lines ol, email_template eml 
     JOIN user p ON ol.user_id = p.user_od 
     WHERE ol.status in (9.2, 10) 
     -- This line here 
      AND eml.name = (ol.status = 10 'SurveyOne' ? 'SurveyTwo') 

我需要得到USER_ID,並根據ol.status值從EML條件行。

回答

3

在MySQL中,三元運算符是IF()函數。

AND eml.name = IF(ol.status = 10, 'SurveyOne', 'SurveyTwo') 
+0

真棒。正是我在找什麼。謝謝! – guice

0

通常情況下,在SQL中,我們儘量保持條件邏輯出where條款(也可以是難以遵循比簡單的邏輯)。

因此,可以考慮:

WHERE (ol.status = 10 and eml.name = 'SurveyOne') or 
     (ol.status = 9.2 and eml.name = 'SurveyTwo') 

注:中恆 「9.2」 是可疑的。當有小數點的數字時,您需要非常小心,並且使用=進行比較。

在一些數據庫中(但不是MySQL的),這可以簡化爲:

WHERE (ol.status, eml.name) in ((10, 'SurveyOne', (9.2, 'SurveyTwo'))