gpt4 book ai didi

MySQL Select 基于列中子字符串的计数?

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

假设我有两个表(我试图从表中删除与问题无关的所有内容并制作一些样本,所以请耐心等待 :)

    ___________________         ________________________
|File | |Content |
|_________________| |______________________|
|ID Primary Key | 1 * |ID Primary Key |
|URL Varcher(255) |---------|FileID Foreign Key |
|_________________| | ref File(ID) |
|FileContent Text |
|______________________|

一个文件有一个 url。每个文件对应的内容项可能有很多。

我需要使用这些我遇到了一些问题的表来创建查询。我本质上想要查询,简单来说,就是:

“选择文件 URL 和子字符串“X”出现在与该文件关联的所有内容条目中的次数总和。”

我非常擅长 SQL 选择,但我不太擅长聚合函数,这让我很失望。非常感谢任何帮助:)

最佳答案

查询效率不高,但可能会给您提示:

SELECT url, cnt
FROM (
SELECT
f.id,
IFNULL(
SUM(
(LENGTH(c.text) - LENGTH(REPLACE(c.text, f.url, '')))/LENGTH(f.url)
),
0
) as cnt
FROM file c
JOIN content c ON f.id = c.fileid
GROUP BY f.id
) cnts JOIN file USING(id);

要附加在内容表中没有匹配项的文件,您可以UNION ALL 其余的在cnts 中使用LEFT JOIN子查询。

关于MySQL Select 基于列中子字符串的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815082/

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