2013-12-10 50 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在这种情况下更好。