开源部落 2013-08-08 18:22 采纳率: 0%
浏览 1146

急,求解 .. 表中有一个关键词字段,现有1000条数据,关键词中不重复的词语。

1.mysql数据库中有一张表,现有1000条数据。表中有一个关键词字段,每个关键词都是由多个词组成的数组。用“|”或“,”或用空格分开的。现在要求得到所有关键词中不重复的词语。

例:关键词:01. 辽宁|上海|中国|国际,亚洲,欧洲
02. 辽宁,中国,天津,山东

结果:辽宁 上海 中国 国际 亚洲 欧洲 天津 山东

数据:数据库名字:qwer
表名:qaz
数据条数:1000
关键词字段:gjczd

要求:写出得到不重复词语的具体流程(包含链接数据库,sql语句,具体函数,并介绍其思路)

代码行数不超过30行。

急..求解 ..

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-12 09:32
    关注

    在 MySQL 中,可以使用以下 SQL 语句来实现查询关键词字段中不重复词语的目的:

    SELECT DISTINCT
        SUBSTRING_INDEX(
            SUBSTRING_INDEX(gjczd, '|', n.n),
            '|',
            -1
        ) AS keyword
    FROM
        qwer.qaz
        CROSS JOIN (
            SELECT
                a.N + b.N * 10 + 1 n
            FROM
                (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
                ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
            ORDER BY n
        ) n
    WHERE
        n.n <= LENGTH(REPLACE(gjczd, '|', '')) + 1
    

    其中:

    • qwer是数据库名,qaz是表名

    • gjczd是关键词字段。

    • 使用CROSS JOIN来组合1~n的数量

    • SUBSTRING_INDEX 函数可以从字符串中提取字符。在这里首先从gjczd中取出每一个词语,然后通过 DISTINCT 去重得到不重复的词语。

    主要的思路就是用组合数来获取所有的词语然后去重,再把所有词语返回。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)