多个匹配条件

用户1646428

我正在尝试根据匹配的关键字过滤结果。这部分我已经成功地实现了。然而,有必要使这种匹配有一些排他性,而另一些则包括在内。例如,如果用户选择了“大号”和“衬衫”,则产品将需要专门匹配它们。但是用户可能希望看到它们是红色、绿色和蓝色(包括在内)。我怎样才能做到这一点?以下是基本概念,但 UNION 似乎不起作用:

SELECT id
FROM Filters
WHERE disabled = '0' AND filter IN ('large','shirt')
GROUP BY id 
HAVING COUNT(filter) = 2

UNION DISTINCT

SELECT id
FROM Filters
WHERE disabled = '0' AND filter IN ('red','green','blue') 
GROUP BY id 
HAVING COUNT(filter) > 1

谢谢!

专卖店

如果我正确地跟随您,您应该能够使用带有HAVING BY使用条件聚合实现逻辑子句的聚合查询

考虑以下查询:

SELECT id
FROM Filters
GROUP BY id
HAVING
    MAX(CASE WHEN filter = 'large' THEN 1 END) = 1
    AND MAX(CASE WHEN filter = 'shirt' THEN 1 END) = 1
    AND MAX(CASE WHEN filter IN ('red','green','blue') THEN 1 END) = 1

细节:

这个聚合条件确保它id有一个记录,其中filter = 'large'

MAX(CASE WHEN filter = 'large' THEN 1 END) = 1

这会检查它id是否具有以下记录filter = 'shirt'

    MAX(CASE WHEN filter = 'shirt' THEN 1 END) = 1

这会检查 3 种颜色中是否至少有一种可用:

MAX(CASE WHEN filter IN ('red','green','blue') THEN 1 END) = 1

如果需要,您应该能够根据您的确切要求调整逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章