2013-12-10 101 views
0

是否可以有一個SELECT CASE語句,然後在WHERE條件中使用THAT列?SELECT CASE並在條件中使用

類似:

LEFT JOIN ( 
SELECT student_id 
, 
CASE 
WHEN (
consent_type = 'Medicaid' 
//condtion here 
) 
THEN 'Yes' 
ELSE 'No' 
END AS refusal 
FROM students_refusal 

) as refusals USING(student_id) 

這將輸出一個是/否列。現在我只想輸出其中包含「否」值的拒絕列。我試過用

WHERE refusal = 'No'。它只是說列拒絕不存在。這個怎麼做?

回答

1

創建一個子查詢 「?WHERE拒絕= '沒有' 它只是說,列拒絕不存在這個怎麼做」

select * from (
    select case when someField=1 then 'yes' else 'no' end as f 
    from sometable) tb 
where tb.f = 'yes' 
0

你不能引用refusalWHERE clause所以我覺得你應該這樣改變:

IF (consent_type = 'Medicaid' //condtion here, 'Yes', 'No') AS refusal 
FROM students_refusal 
WHERE 
    IF (consent_type = 'Medicaid' //condtion here, 'Yes', 'No') = 'No' 

順便說一句,我認爲IF()CASE在這種情況下更好。