我想做类似以下的事情,但这不起作用。逻辑是:如果列表仍然存在,则获取活动的user_favourite记录,否则获取不活动的记录。
select uf.*
from user_favourite uf
join listings l on l.record_id = uf.listing_id
AND
CASE WHEN l.status IN (0,1,5) THEN uf.active = 1
ELSE uf.active = 0
END CASE
where uf.listing_id = 13
这个的正确语法是什么?
答案 0 :(得分:3)
可以写成:
SELECT uf.*
FROM user_favourite uf
JOIN listings l ON (
l.record_id = uf.listing_id
AND uf.active = IF(l.status IN (0,1,5), 1, 0)
)
WHERE uf.listing_id = 13
另外,条件
uf.active = IF(l.status IN (0,1,5), 1, 0)
可以简化为
uf.active = (l.status IN (0,1,5))
或者,如果您想保留CASE
声明
uf.active = CASE
WHEN l.status IN (0,1,5) THEN 1
ELSE 0
END