MySQL case在where子句中

时间:2014-11-27 19:36:02

标签: mysql

我的WHERE子句中的CASE语句出现疑似逻辑错误,但我看不出问题。

SELECT a_id, a_name, a_folder_flag
FROM table_a
LEFT JOIN table_b ON table_a.a_id = table_b.b_a_id
WHERE a_status_id = 1
AND (
CASE
    WHEN a_access_flag = 1
    THEN b_usr_id = 1 OR b_grp_id = 2
    END )
GROUP BY a_id

基本上我想从table_a获取所有记录,但如果a_access_flag1,那么我需要在CASE语句中应用额外的where子句过滤。

当我包含CASE语句时,它返回0行。

1 个答案:

答案 0 :(得分:2)

case子句中,where没有多大意义。但是你可以把它转换成逻辑。尝试

WHERE a_status_id = 1
AND 
(
  a_access_flag <> 1
  OR (b_usr_id = 1 OR b_grp_id = 2)
)