我 有 一 个 POST 表 和 一 个 TAG 表 , 我 解释 POST 表 包含 以下 字段 :id 、 title 、 content 、 tags _ ids , 这 意味 着 tags _ ids 字段 可以 包含 多 个 标签 , 例如 ID = 1 的 POST 具有 以下 标签 :tag_1 、 tag_2 和 tag_5 以 分隔 ;
POST 表
id title content tag_id
---------- ---------- ---------- ----------
1 title1 Text... 1; 2; 5
2 title2 Text... 3
3 title3 Text... 1; 2
4 title4 Text... 2; 3; 4
5 title4 Text... 2; 3; 4
6 title2 Text... 3
中 的 每 一 个
TAG 表
id name
---------- ----------
1 tag_1
2 tag_2
3 tag_3
4 tag_4
5 tag_5
格式
所以 , 我 想 知道 每 宗 个案 登记 了 多少 个 职位 。
这 是 我 的 疑问
select tag, COUNT(*) AS cnt
from(
select CATEGORY.name,
case
when POST.tag_id is not null then tag.name
end as tag
from POST
left join TAG ON POST.tag_id = TAG.id
)
GROUP BY tag
;
格式
这 是 我 想 在 查询 中 显示 的 结果
tag cnt
-------------------- --------------
tag_1, tag_2, tag_5 1
tag_3 2
tag_1, tag_2 1
tag_2, tag_3, tag_4 2
格式
顺 祝 商祺
2条答案
按热度按时间sqougxex1#
这里有一个选项:读取代码中的注解。
示例数据:
查询从此处开始:
6l7fqoea2#
您 不 需要 拆分 帖子 , 只需 按
tag_id
s 进行 聚合 即可 获得 预期 的 输出 :中 的 每 一 个
其中 , 对于 示例 数据 :
格式
输出 :
| 标签 标识|帖子 数量|
| - -| - -|
| 1 、 二|一 个|
| 三 个|2 个|
| 第 1 、 2 、 5 页|一 个|
| 二 、 三 、 四|2 个|
如果 要 将 ID 转换 为 名称 , 请 执行 以下 操作 :
格式
输出 :
| 标签|帖子 数量|
| - -| - -|
| 标签 _1 ; 标签 _2|一 个|
| 标签 _1 ; 标签 _2 ;标签 _5|一 个|
| 标签 _2 ; 标签 _3 ;标签 _4| 2 个|
| 标签 _3| 2 个|
如果 要 计算 每个 标签 的 帖子 数 , 请 执行 以下 操作 :
格式
输出 :
| 识别 码|帖子 数量|
| - -| - -|
| 2 个|四 个|
| 四 个|2 个|
| 三 个|四 个|
| 五 个|一 个|
| 一 个|2 个|
fiddle 的 最 大 值