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'

谢谢这就是我需要的。