开源部落 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 去重得到不重复的词语。

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

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决