gpt4 book ai didi

跨越多行的结果的 mysql 逻辑

转载 作者:行者123 更新时间:2023-11-29 04:54:54 26 4
gpt4 key购买 nike

我有一个产品搜索查询,返回的行与此类似:

| id | name | search tag |
| 1 | cat | furry |
| 1 | cat | ginger |
| 2 | dog | furry |

我需要做的是能够获得匹配多个搜索标签的单行 - 对于这个例子,搜索 furry AND ginger 不会返回任何行,因为只有一个搜索每行标记(这是因为为了获得这些结果,我使用了 INNER JOIN)。

我的问题是,我需要做什么才能在查询中测试 furry AND ginger 并返回猫而不是狗?

我在 PHP 中执行此操作。


更新

为了应对用户输入重复标签的情况,对 HAVING 条件的简单修复将返回具有重复标签的行,而不是忽略它们:

mysql> select id, name, group_concat(tag) as tags, 
count(tag) as cnt from animals where tag in ('furry', 'ginger')
group by id HAVING cnt>=2;

最佳答案

您可以先选择具有所需标签的行,然后按动物 ID 对它们进行分组。计算每只动物获得的结果数量,如果它与您想要的标签数量相同,则表示匹配。

mysql> select id, name, group_concat(tag) as tags, 
count(tag) as cnt from animals where tag in ('furry', 'ginger')
group by id HAVING cnt=2;
+----+------+--------------+-----+
| id | name | tags | cnt |
+----+------+--------------+-----+
| 1 | cat | furry,ginger | 2 |
+----+------+--------------+-----+

关于跨越多行的结果的 mysql 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469330/

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