gpt4 book ai didi

php - 多个匹配条件

转载 作者:行者123 更新时间:2023-11-29 09:49:10 25 4
gpt4 key购买 nike

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

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

关于php - 多个匹配条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55130603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com