从Where子句中的多个IF条件中选择
我有一个以下查询
SELECT *
FROM products a, productImgs b
WHERE a.visible = 1 AND a.Type IN ('Accessories', 'Clothing', 'Electronics')
ORDER BY a.visibleOrder ASC
LIMIT 100
在上面的查询中,我需要添加 IF 条件,即 IF a.Type 是 Accessories,那么我需要从某些 a.Brands 中进行选择,如果 a.Type 是 Clothing,那么我需要从某些 a.Brands 中进行选择
For a.Type 'Accessories' -> a.Brands IN (ALL)
For a.Type 'Clothing' -> a.Brands IN ('A','B','C')
For a.Type 'Electronics' -> a.Brands IN ('D','E','F')
I have a following query
SELECT *
FROM products a, productImgs b
WHERE a.visible = 1 AND a.Type IN ('Accessories', 'Clothing', 'Electronics')
ORDER BY a.visibleOrder ASC
LIMIT 100
In the above query I need to add IF condition that IF a.Type is Accessories then I need certain a.Brands to select from and if a.Type is Clothing then I need to select from certain a.Brands
For a.Type 'Accessories' -> a.Brands IN (ALL)
For a.Type 'Clothing' -> a.Brands IN ('A','B','C')
For a.Type 'Electronics' -> a.Brands IN ('D','E','F')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
CASE
表达式,但您还应该为 2 个表编写带有ON
子句的正确联接:Use a
CASE
expression, but you should also write a proper join with anON
clause for the 2 tables:像使用任何其他 where 子句一样使用括号和
and/or
条件:这应该让 MySQL 有机会使用索引。
Use parentheses and
and/or
conditions like you would with any other where clause:This should give MySQL chance to use indexes.