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和条件行。
答案 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') )