Mysql WHERE条件下的IF语句
我有两个相关的表格;类别和订阅。类别->订阅的关系并不总是存在。所以我需要像这样的东西:Mysql WHERE条件下的IF语句,mysql,sql,Mysql,Sql,我有两个相关的表格;类别和订阅。类别->订阅的关系并不总是存在。所以我需要像这样的东西: SELECT * FROM categories LEFT JOIN subscriptions ON subscriptions.category_id = categories.category_id WHERE IF EXISTS(subscriptions.is_enable) categories.type = 'premium' AND subscriptions.is_enabl
SELECT * FROM categories
LEFT JOIN subscriptions
ON subscriptions.category_id = categories.category_id
WHERE
IF EXISTS(subscriptions.is_enable)
categories.type = 'premium' AND
subscriptions.is_enable = 1
ELSE
categories.type = 'premium' AND
有没有办法这样写条件?因为if/else子句中的所有术语都是逻辑AND,所以您可以简单地将它们逻辑地分组
SELECT * FROM categories
LEFT JOIN subscriptions
ON subscriptions.category_id = categories.category_id
WHERE
(EXISTS(subscriptions.is_enable) AND
categories.type = 'premium' AND
subscriptions.is_enable = 1)
OR
(categories.type = 'premium' AND...)
您可以按如下逻辑重写您的条件:
SELECT * FROM categories
LEFT JOIN subscriptions
ON subscriptions.category_id = categories.category_id
WHERE (subscriptions.is_enable IS NULL OR subscriptions.is_enable = 1)
AND categories.type = 'premium'
谢谢这就是我需要的。