mysql.help_topic的作用及使用

文章介绍了MySQL的help_topic表,这是一个存储帮助信息的内部表,具有唯一的help_topic_id。通过示例展示了如何利用此表与其他表进行关联查询,以执行复杂SQL操作,如创建动态日期范围和分割字符串为多行数据。这些技巧有助于扩展简单的SQL查询功能。
摘要由CSDN通过智能技术生成

今天在查询sql写法时突然出现一个没有接触过的表,mysql.help_topic.

网上也没有给出作用及解释,都是一些使用方法,对于不了解的人会容易蒙圈.

经过长时间的查询后写下这篇文章,希望能帮到大家,错误的地方还请指出.

mysql.help_topic本身是mysql的一张信息表,用来存储各种注释等帮助信息.比如

同时它有一个特点,拥有一个自增为1的id属性--help_topic_id 并且 拥有固定数量的数据

这时就可以通过这两个特点做一些表关联操作来达到简单sql无法达到的事情.

比如如下这段

SELECT
    DATE( DATE_ADD( '2022-05-01', INTERVAL @s DAY ) ) AS date,
    '异常总条数' as e_name,
     @s := @s + 1 AS `index`
FROM
    mysql.help_topic,
    ( SELECT @s := 0 ) temp 
WHERE
    @s <= DATEDIFF('2022-05-31','2022-05-01')

 查询结果

 

( SELECT @s := 0 ) temp 

原本只有一条记录,和mysql.help_topic关联后就可以展示多条数据.

再举一个例子可以将自定义的字符串转换为列数据

SELECT
    substring_index( 
        substring_index( a.phone, ',', b.help_topic_id + 1 ),
         ',', - 1 ) AS phone 
FROM
    ( SELECT '15555555555,12222222222' AS phone FROM DUAL ) a
    INNER JOIN mysql.help_topic b ON b.help_topic_id < (
        length( a.phone ) - length(
        REPLACE ( a.phone, ',', '' )) + 1 
    )

老规矩本来只有一条记录的a表,关联查询后查询出多条数据,where条件根据分隔符','判断共几条数据,select中查询固定范围字符串,substring_index先从左向右截取到第b.help_topic_id+1个','字符串,再从右向左截取第一个也就是最后一个,由此取出当前应该显示的字符

查询结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值