选择案例并在条件中使用

时间:2013-12-10 03:32:56

标签: mysql sql postgresql

是否可以使用SELECT CASE STATEMENT,然后在WHERE条件中使用THAT列?

类似的东西:

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)

这将输出是/否列。现在我想输出其中包含“No”值的拒绝列。我尝试使用

WHERE refusal = 'No'。它只是说列拒绝不存在。怎么做?

2 个答案:

答案 0 :(得分:1)

创建子查询:

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

答案 1 :(得分:0)

  

“WHERE拒绝='否'。它只是说列拒绝不存在。怎么做?”

你无法在refusal中引用WHERE 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