在WHERE条件(MySQL)中的三元?

时间:2016-08-11 00:35:27

标签: mysql ternary

MySQL(5.7.x):无论如何在WHERE条件中做三元论证?

我正在尝试根据select:

的值运行AND子句
    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')

我需要根据ol.status值从eml获取user_id和条件行。

2 个答案:

答案 0 :(得分:3)

在MySQL中,三元运算符是IF()函数。

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

答案 1 :(得分: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') )