gpt4 book ai didi

mysql 以某种方式分组,然后从标签映射中选择

转载 作者:行者123 更新时间:2023-11-29 12:07:27 25 4
gpt4 key购买 nike

表格:

| tag_id | article_id |
|--------|------------|
| 1 | 100 |
|--------|------------|
| 2 | 100 |
|--------|------------|
| 1 | 200 |
|--------|------------|
| 1 | 300 |

我怎样才能只选择前两行

逻辑:仅选择文章具有tag_id 1 和 2

在本例中,它是 id 100 的文章

我可以使用 php 来过滤结果,但 mysql 通常更简洁。

最佳答案

要获取同时具有 tag_id 1 和 2 的article_ids,您可以将 where 子句与受having 子句限制的 group by 子句结合使用,如下所示:

select article_id 
from your_table
where tag_id in (1,2)
group by article_id
having count(distinct tag_id) = 2;

对于您的示例表,这将返回article_id = 100。

请注意,这不仅会返回具有 tag_id 1 和 2 的文章,还会返回具有 tag_id 1 和 2 以及其他标签的文章 - 它只是将结果限制为那些至少具有的文章/em> tag_id 1 和 2(但可以有更多)。如果您想限制那些只有 tag_id 1 和 2 的文章,那么您可以添加一个相关的存在谓词。

Sample SQL Fiddle

关于mysql 以某种方式分组,然后从标签映射中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232851/

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