如何在 sql 中创建查询以将句子切分成单词并将它们及其频率添加到新表中

2024-04-06

我正在尝试执行一个查询,但不确定是否可行 我有一张桌子叫句子其中包含IS、句子和验证,如下图所示。

我还有另一张桌子叫字数其中包含 ID、单词和出现频率。所以我希望每当一个句子输入更新或删除时,该表都会相应更新或每天更新,因为可能有很多句子

我的预期输出如下图所示。

任何想法都是可行的,任何人都可以帮忙。


如果您运行的是 MySQL 8.0,我建议您使用递归公用表表达式。这个想法是迭代地遍历每条消息,并将其分解为单词。然后剩下要做的就是聚合。

with recursive cte as (
    select 
        substring(concat(sent, ' '), 1, locate(' ', sent)) word,
        substring(concat(sent, ' '), locate(' ', sent) + 1) sent
    from messages
    union all
    select 
        substring(sent, 1, locate(' ', sent)) word,
        substring(sent, locate(' ', sent) + 1) sent
    from cte
    where locate(' ', sent) > 0
)
select row_number() over(order by count(*) desc, word) wid, word, count(*) freq
from cte 
group by word
order by wid

在早期版本中,您可以使用数字表模拟相同的行为。

样本数据:



sent                       | verif
:------------------------- | ----:
hello my name is alex      |  null
hey alin and alex I'm tom  |  null
hello alex my name is alin |  null
  

Results:



wid | word   | freq
--: | :----- | ---:
  1 | alex   |    3
  2 | alin   |    2
  3 | hello  |    2
  4 | is     |    2
  5 | my     |    2
  6 | name   |    2
  7 | and    |    1
  8 | hey    |    1
  9 | I'm    |    1
 10 | tom    |    1
  

当涉及到在单独的表中维护查询结果时,它可能比您想象的更复杂:您需要能够根据原始表中的更改来插入、删除或更新目标表,而这是不可能的在 MySQL 中用一条语句完成。此外,在原始表中保持标志为最新会产生竞争条件,在更新目标表时可能会发生更改。

一个更简单的选择是将查询放在视图中,这样您就可以获得有关数据的始终最新的视角。为此,您可以将上面的查询包装在create view声明,如:

create view words_view as < above query >;

如果性能成为问题,那么您还可以定期截断并重新填充单词表。

truncate table words;
insert into words < above query >;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 sql 中创建查询以将句子切分成单词并将它们及其频率添加到新表中 的相关文章

  • C 中的指针、数组、字符串和 Malloc

    我目前正在学习 C 语言中的字符串 指针和数组 我尝试编写一个程序 其中数组保存三个指向字符串地址的指针 这一切似乎都有效 但程序的行为很奇怪 这是代码 char getUserDetails char host localhost cha
  • 需要 SQL 查询澄清[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个由以下列组成的表 billid patientid doctorid fees 如何显示治疗多名患者的医生 尝试了以下代码并得到了
  • 在C#中的某个单词之后/之前过滤字符串中的值

    我有很长的字符串 它们是 IMAP 请求的响应 我想从中提取一些值 它通常的格式类似于 x someword 或 someword x 如何获取某个单词 已知 的x 它可以超过一位数字 响应的每一 行 如下所示 x someword r n
  • 正则表达式查找字符串中的整数和小数

    我有一个像这样的字符串 str1 12 ounces str2 1 5 ounces chopped 我想从字符串中获取金额 无论它是否是小数 12 或 1 5 然后获取紧邻的前一个测量值 盎司 我能够使用一个非常基本的正则表达式来获取测量
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 将两个表合并为一个输出

    假设我有两张表 已知营业时间 ChargeNum CategoryID Month Hours 111111 1 2 1 09 10 111111 1 3 1 09 30 111111 1 4 1 09 50 222222 1 3 1 09
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • Rust 编程竞赛中最快的惯用 I/O 例程?

    我的问题已部分得到解答 因此我根据从评论和其他实验中学到的知识对其进行了修改 总之 我想要一个用于编程竞赛的快速 I O 例程 其中使用单个文件解决问题 无需外部包 它应该从一个以空格分隔的标记序列中读取BufRead 标准输入或文件 标记
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • PLSql 返回值

    我再次使用一些 PLSql 我想知道 是否有任何方法可以像选择一样使用以下函数 而不必将其转换为函数或过程 这样我就可以从包含它的脚本中看到代码 代码如下 DECLARE outpt VARCHAR2 1000 flow rI VARCHA
  • SQL - 需要查找重复记录但排除反向事务

    我有一张交易表 偶尔会有 重复条目 如果 当管理员发现这些重复条目时 他们将撤销交易 从而创建负值 但由于监管要求 原始重复条目仍然保留 我想创建一个 SQL 查询 并使用 Crystal Reports 来制作报告 以便管理员轻松查找重复
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi

随机推荐

  • 如何在 R CMD 构建中使用 Makefile

    我正在开发一个 R 包 它基于一个仅使用 Makefile 的项目 其中大部分很容易翻译成R CMD build工作流程 然而 我需要创建的 pdf 有点复杂 除非我修补 否则我无法正确地创建它们 到目前为止 我想出了如何使用 Makefi
  • 如何让 valgrind 忽略某些行?

    例如 26460 2 bytes in 1 blocks are still reachable in loss record 2 of 105 26460 at 0x4C28BE3 malloc vg replace malloc c 2
  • 禁用输出缓冲

    Python 解释器中默认启用输出缓冲吗sys stdout 如果答案是肯定的 有哪些方法可以禁用它 到目前为止的建议 Use the u命令行开关 Wrap sys stdout在每次写入后刷新的对象中 Set PYTHONUNBUFFE
  • 如何在 WinForms 中使用依赖注入

    如何在 Winforms C 中定义依赖注入 接口IC类别 public interface ICategory void Save 类类别存储库 public class CategoryRepository ICategory priv
  • 如何创建一对一关系 SQL Server 图表

    有谁知道如何从 SQL Server 数据库图表创建一对一关系 你需要放一个unique key constraint on top of the foreign key 因此它仅限于一对一的关系
  • R 中的错​​误:要替换的项目数不是替换长度的倍数

    此代码向我显示此错误 要替换的项目数不是替换长度的倍数 我不知道问题出在哪里 所以这是代码 k lt c 0 0 0 0 x lt 30 t lt c 10 20 30 35 x1 lt x t for i in 1 4 k i lt 0
  • Spring 4.3.7 抛出 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultIndenter

    当我从 spring 4 3 4 迁移到 4 3 7 时 添加 Jackson core 依赖项后遇到 NoclassDefined 错误 引起 org springframework beans BeanInstantiationExce
  • GWT 应用程序的内存使用情况

    我目前正在开发 GWT 应用程序 作为未来项目的技术证明 我喜欢用 Java 而不是 JavaScript 构建 AJAX 代码的方式 但当我重复调用 RPC 服务时 我似乎遇到了内存问题 浏览器内存使用量不断增长 当我搜索 Google
  • iphone、ipad 重复 UIView - 克隆视图

    如何复制 UIView 要求是一个视图内应该有两个视图 例如视图 A 和视图 B 更改一个视图也应该更改另一个视图 例如 考虑在视图 A 中添加一个 mpmediaplayer 意味着视图 B 应该显示与视图 A 中相同的视频 如果我在视图
  • 我如何在R中读取MTL文件

    我对 R 编程非常陌生 请有人告诉我如何读取用陆地卫星数据存档的 MTL 文件 对于随 Landsat 场景提供的标准 MTL 文件 该文件来自地球探索号 http earthexplorer usgs gov or Glovis http
  • 如何再次启动外部 JavaFX 程序?即使 JavaFX 程序以 Platform.Exit 结束,Launch 也会阻止这种情况发生

    从我的 MainProject Java 8 开始 我启动了一个 JavaFX 8 类 public void startFX if isRestartPrintModul true fxMain init else setRestartP
  • Android:发送数据短信时出现问题

    我已经编写了发送加密消息的代码 但加密数据 SMS 未发送 因为 onreceive 方法未调用 我认为接收器部分有问题 现在 我是 android 新手 任何人都可以帮助我以下代码有什么问题 我正在使用 RSA 算法 提前致谢 发送 pu
  • 使用 Javascript 循环将 Leaflet GeoJSON 层从 GeoServer 添加到数组

    我正在尝试使用循环将 GeoJSON 图层添加到数组中 然后将它们显示在我的地图上 我的目标是拥有一个像这样的变量 场景 json 1 第 1 层 场景 json 2 第 2 层 等等 myURL http localhost 8080 g
  • 按位非运算符解释

    为什么按位非运算符 在大多数语言中 会像这样转换以下值 2 gt 1 1 gt 0 0 gt 1 1 gt 2 不应该 2转换成2 1转换成 1 etc See 二进制补码 http en wikipedia org wiki Two 27
  • 如何按名称查找 Eclipse 项目和文件夹?

    有没有办法在 Eclipse 工作区中按名称搜索文件夹 项目 结果最好在我可以执行批量操作 例如关闭 打开 分配工作集 的视图中返回 手动点击数百个项目的列表实在是太麻烦了 这个看似微不足道的任务让我感到悲伤 在我经历了这么多年的日食之后
  • 如何停止后台运行的 PHP 脚本

    我开始这个过程 time php
  • 取消 handler.postdelayed 进程

    我在用handler postDelayed 在我的应用程序的下一阶段发生之前创建一个等待期 在等待期间 我显示一个带有进度条的对话框 cancel button 我的问题是我找不到办法取消帖子延迟时间过去之前的任务 我这样做是为了发布延迟
  • VS Code 远程 SSH 连接不起作用

    我正在尝试在第二台电脑上使用远程开发扩展设置 vscode 虽然它适用于我的主要一台 但不适用于第二台 尝试重新安装 vscode 扩展并使用旧版本 但没有任何效果 尝试连接时 选择操作系统后会取消 所以我什至无法输入密码 我的设置方式与另
  • 为什么“导入模块”然后“从包导入模块”再次加载模块?

    我的 PYTHONPATH 中有一个包 看起来像这样 package init py module py print Loading module 如果我从以下位置运行 Pythonpackage 目录 或在此目录中写入另一个模块 并输入
  • 如何在 sql 中创建查询以将句子切分成单词并将它们及其频率添加到新表中

    我正在尝试执行一个查询 但不确定是否可行 我有一张桌子叫句子其中包含IS 句子和验证 如下图所示 我还有另一张桌子叫字数其中包含 ID 单词和出现频率 所以我希望每当一个句子输入更新或删除时 该表都会相应更新或每天更新 因为可能有很多句子