2016-08-11 1 views
1

MySQL (5.7.x) : WHERE 조건에서 3 진 인수를 수행 할 여지가 있습니까? 내가 user_id를 얻을 필요가어디에서 조건 (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') 

및 ol.status 값을 기준으로 EML에서 조건 행 :

나는 선택의 값을 기반으로 AND 절을 실행하기 위해 노력하고있어.

답변

3

MySQL에서 삼항 연산자는 IF() 함수입니다.

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

최고 :

일부 데이터베이스에서

(하지만 MySQL은), 이것은 단순화 할 수있다. 정확히 내가 무엇을 찾고 있었는지. 감사! – guice

0

은 일반적으로는, SQL, 우리는 (간단 논리보다 따라하기 어렵게 될 수 있습니다) where 조항 중 조건부 논리를 유지하려고합니다.

그래서, 고려 :

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

참고 : "9.2"상수는 의심스러운입니다. 소수점이있는 숫자가 있고 =을 사용하여 비교할 때 매우주의해야합니다.

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