精华内容
下载资源
问答
  • mysql.help_topic表无权限使用解决方法

    千次阅读 2020-12-19 14:30:30
    我想要分开,每个人单独一条,于是用到了mysqlhelp_topic表 代码: select id, substring_index(substring_index(a.owner,';' ,b.help_topic_id+1),';',-1) owner from test a join mysql.help_topic b...

    1.由于我的数据有个字段是由;号隔开
    在这里插入图片描述
    我想要分开,每个人单独一条,于是用到了mysql的help_topic表
    代码:

    	 	 select  id,
            substring_index(substring_index(a.owner,';'
            ,b.help_topic_id+1),';',-1) owner
        from 
            test a
        join
            mysql.help_topic b
            on b.help_topic_id < (length(a.owner) - length(replace(a.owner,';',''))) 
            -- 比较help_topic_id大小与owner去掉;后的长度之差,小于则连接因为mysql.help_topic是0开始
    		-- 意思就是重复连接复制了几份但是唯一不同的就是mysql.help_topic的id大小
       order by a.id
    

    原理解析:理解了上面注释后就很好理解了,substring_index(substring_index(a.owner,’;’
    ,b.help_topic_id+1),’;’,-1)因为不同的就是help_topic_id,onewer都是复制了几份,只要根据不同点help_topic_id来动态截取字段就能实现。
    实现结果:
    在这里插入图片描述
    全查出来就更好懂了吧:
    在这里插入图片描述
    再不懂我把截取去掉:
    在这里插入图片描述
    所以如果你没有权限使用mysql自带表,就自己建一个,因为靠的是join连接,你要考虑下大小,不要字段太小,划分太多

    展开全文
  • 使用到数据库自带的mysql.help_topic表来属性拆分,help_topic表就是实现行转列功能 SELECT SUBSTRING_INDEX( SUBSTRING_INDEX('1,2,3,4,5',',',help_topic_id + 1),',' ,- 1) lzh FROM mysql.help_topic WHERE ...

    使用到数据库自带的mysql.help_topic表来属性拆分,help_topic表就是实现行转列功能

    SELECT
    	SUBSTRING_INDEX(
    		SUBSTRING_INDEX('1,2,3,4,5',',',help_topic_id + 1),',' ,- 1) lzh
    FROM
    	mysql.help_topic
    WHERE
    	help_topic_id < (LENGTH('1,2,3,4,5')) - LENGTH(REPLACE ('1,2,3,4,5', ',', '')) + 1;
    

    在这里插入图片描述

    展开全文
  • mysql根据help_topic 获取指定日期 近12月 SELECT date_format( date_sub( curdate(), INTERVAL (cast(help_topic_id AS signed) - 0) MONTH), '%Y-%m' ) MONTH FROM mysql.help_topic WHERE # 符号...

    mysql根据help_topic 获取指定日期

    近12月

    SELECT
    	date_format(
    		date_sub(
    			curdate(),
    			INTERVAL (cast(help_topic_id AS signed) - 0) MONTH),
    		'%Y-%m'
    	) MONTH
    FROM
    	mysql.help_topic
    WHERE
    	# 符号转移需替换 <![CDATA[<]]>
    	help_topic_id < 12
    ORDER BY
    	help_topic_id
    

    本年:1月-12月

    SELECT
    	date_format(
    		date_sub(
    			ConCAT(YEAR(curdate()), '-12-31'),
    			INTERVAL (
    				cast(help_topic_id AS signed) - 0
    			) MONTH
    		),
    		'%Y-%m'
    	) MONTH
    FROM
    	mysql.help_topic
    WHERE
    	# 符号转移需替换 <![CDATA[<]]>
    	help_topic_id < 12
    ORDER BY
    	help_topic_id
    

    上月:1号开始

    SELECT
    	date_sub(
    		curdate(),
    		INTERVAL (
    			cast(help_topic_id AS signed) + date_format(curdate(),'%d')
    		) DAY
    	) month
    FROM
    	mysql.help_topic
    WHERE
     # 符号转移需替换 <![CDATA[<]]>
     help_topic_id < day(LAST_DAY(date_sub(curdate(), INTERVAL(1) MONTH)))
    ORDER BY
    	help_topic_id
    

    上月:当前日期 - 上月今日

    SELECT
    	date_format(
    		date_sub(
    			curdate(),
    			INTERVAL (cast(help_topic_id AS signed) - 0) DAY),
    		'%Y-%m-%d'
    	) MONTH
    FROM
    	mysql.help_topic
    WHERE
    	# 符号转移需替换 <![CDATA[<]]>
    	help_topic_id < day(LAST_DAY(date_sub(curdate(), INTERVAL(1) MONTH))) + 1
    ORDER BY
    	help_topic_id
    

    本月:1号 - 当前日期

    SELECT
    	date_format(
    		date_sub(
    			curdate(),
    			INTERVAL (cast(help_topic_id AS signed) - 0) DAY),
    		'%Y-%m-%d'
    	) MONTH
    FROM
    	mysql.help_topic
    WHERE
    	# 符号转移需替换 <![CDATA[<]]>
    	help_topic_id < day(date_sub(curdate(), INTERVAL(1) MONTH))
    ORDER BY
    	help_topic_id
    

    本月:1号 - 最后一天

    SELECT
    	date_format(
    		date_sub(
    			last_day(curdate()),
    			INTERVAL (
    				cast(help_topic_id AS signed) - 0
    			) DAY
    		),
    		'%Y-%m-%d'
    	) MONTH
    FROM
    	mysql.help_topic
    WHERE
    	# 符号转移需替换 <![CDATA[<]]>
    	help_topic_id < DAY (
    		date_sub(
    			last_day(curdate()),
    			INTERVAL (1) MONTH
    		)
    	)
    ORDER BY
    	help_topic_id DESC
    

    趋势分析使用模板

    SELECT
        输出字段A,
        输出字段B
    FROM
    (
    	# 这里使用 上面获取指定时间的sql
        SELECT
            date_format(date_sub(concat(YEAR(curdate()), '-12-31'),
        INTERVAL (cast(help_topic_id AS signed) - 0) MONTH),'%Y-%m') MONTH
        FROM
            mysql.help_topic
        WHERE
            help_topic_id <![CDATA[<]]> 12
        ORDER BY
            help_topic_id
    ) a
    LEFT JOIN (
    	# 这里是查询具体业务表 输出结果中一定要有日期和上面输出的日期(a.MONTH)匹配
        SELECT
        	c.filedA,
        	...
        	c.time as time
        FROM
            tableC as c
        GROUP BY
        	# 格式化业务表 tableC 中的日期字段,保证和上面时间sql获取到的保持一致
            date_format(c.time, '%Y-%m')
    ) AS b
    ON b.time = a.MONTH
    
    展开全文
  • 行列转换常见场景 由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。...id构建:如有一行数据value有100个逗号分割的值,需要循环100次,mysql内部也有属性表help_topic自增id help.

    行列转换常见场景

    由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值(具体结构见下表)。 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果。

    源表数据:

    期望得到目标结果:

    思路分析:

     这个join最基本原理是笛卡尔积,通过实现循环,依次按照逗号分割截取后,改变列的数值

    方法:

    id构建:如有一行数据value有100个逗号分割的值,需要循环100次,mysql内部也有属性表help_topic自增id help_topic_id可用,共有659个连续的id,id最大值大于符合分割value值的个数,能满足于大部分需求了

    mysql中截取字符串的函数:substring_index。

    substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)

    通过 b.help_topic_id < (length(a.value) - length(replace(a.value,',',''))+1)限制循环的次数,再截取每次循环的最后一位。

    测试过程如下:

    select 
    a.id,a.value,substring_index(a.value,',',b.help_topic_id+1),substring_index(substring_index(a.value,',',b.help_topic_id+1),',',-1) 
    from 
    source_table a
    join
    mysql.help_topic b
    on b.help_topic_id < (length(a.value) - length(replace(a.value,',',''))+1)
    order by a.id;

    整体sql:

    select a.id,substring_index(substring_index(a.value,',',b.help_topic_id+1),',',-1)  as value
    from 
    source_table a
    join
    mysql.help_topic b
    on b.help_topic_id < (length(a.value) - length(replace(a.value,',',''))+1)
    order by a.id;
    

     

    展开全文
  • 我想要分开,每个人单独一条,于是用到了mysqlhelp_topic表 SELECT ss.salary_subsidy_id, ss.subsidy_users_name, substring_index( substring_index( ss.subsidy_users_id, ',', b.help_topic_id + 1 ), ','...
  • 转载请注明出处:... 1.在安装mysql 5.6.15时,安装完成后,后台日志报如下警告信息: 2019-06-17 13:47:34 22946 [Warning] InnoDB: Cannot open table mysql/slave_master_info from t...
  • 用到的知识点: substring_index() length() mysql.help_topic 原数据如下,将jsondata转成多行,以逗号分割 ... substring_index( SUBSTRING_INDEX( tp.jsondata, ',... LEFT JOIN mysql.help_topic hp ON hp.help_t
  • 1、前提 试卷表有个字段,保存的是题目表的题目集合 ...select id="getTopicListByTopicSet" parameterType="string" resultType="Topic"> select <include refid="TopicColumns"></include>..
  • SELECT DISTINCT info.`id`, SUBSTRING_INDEX( SUBSTRING_INDEX( info.`material_id`, ... b.help_topic_id + 1 ), ',', - 1 ) AS material_id FROM ( ...
  • 希望能简短一点,因此调用MySQLhelp_topic进行改写: MySQL版本 SELECT substring_index( substring_index( m_str, m_split, help_topic_id + 1 ), m_split,- 1 ) AS MONTH FROM mysql.help_topic, ( SELECT '1...
  • 需求:想要获取日期格式(如:2020-07-10)列表,但是日期在表中 date_list 字段中的格式如下: 时间戳(毫秒... substring_index(substring_index(a.date_list, '|', b.help_topic_id + 1), '|', - 1) AS date FROM ta
  • 环境:mysql一主一从架构,主库是mysql5.1,从库是mysql5.6;系统均为CentOS6.2 问题: 在主库上面执行的SQL语句 1.创建表 CREATETABLE`app_versions`(`date`dateNOTNULL,`app`char(16)NOTNULL,`ver`...
  • 好友推荐(列转行,help_topic_id)

    千次阅读 2021-05-25 08:34:42
    本题主要分享一下结合mysql.help_topic 这张系统表做列转行的一些巧妙的解题思想。 一、题目:好友推荐 1、 两人不是好友,但有共同好友,可以相互推荐(共同好友有n个,推荐指数为n) 2、例如:小明和小王不是好友,...
  • help_topic

    万次阅读 2018-07-20 10:29:07
    ### Error updating database. Cause: ...SELECT command denied to user 'autochain_uat'@'localhost' for table 'help_topic' ### The error may invo...
  • 在生产库MariabDB中修改字段类型,提示如下错误: Table 'mysql.column_stats' doesn't exist Table 'mysql.index_stats' doesn't exist ...
  • 1.在安装mysql 5.6.15时,安装完成后,后台日志报如下警告信息: 2014-01-08 13:47:34 22946 [Warning] InnoDB: Cannot open table mysql/slave_master_info from the internal data dictionary of InnoDB though ...
  • 原因:mysql用户没有执行查询help_topic表的权限,需要root用户授权。 解决方案: # ./mysql -uroot -p > source /path/to/phpmyadmin/examples/create_tables.sql; > GRANT SELECT, INSERT, UPDATE, ...
  • MySQL 的帮助信息重要吗?不太重要!有用吗?有!就好比你在家洗澡的时候,突然有人不停地按你家的门铃,能把你憋出心脏病来,嘿嘿。我想,各位DBA同行们,在数据库的日常维护过程中,如果突...
  • MySQLhelp命令

    千次阅读 2018-08-16 05:11:38
    MySQLhelp 命令 mysql&gt; help contents; You asked for help about help category: "Contents" For more information, type 'help &lt;item&gt;', where &lt;item&gt; is...
  • MySQLhelp 命令你真的会用吗?

    千次阅读 2018-07-19 15:19:03
    MySQL 的帮助信息重要吗?不太重要!有用吗?有!就好比你在家洗澡的时候...help xxx" 语句来查看MySQL 自带的帮助信息。但你一定或多或少能碰到这样的场景:记不清某个语句的具体拼写了,只能模糊的记得几个字...
  • 解决Navicat连接MySQL数据库报 1146 - Table 'performance_schema.session_variables' doesn't exist 异常信息 管理员身份运行命令提示符窗口,进入到MySQL的安装bin目录下,写入以下命令后回车,再输入MySQL...
  • help_topic表是数据库mysql下的一个表 SUBSTRING_INDEX(s, delimiter, number)  返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。 如果 number 是正数,返回第 number 个字符左边的...
  • 技术点:mysql.help_topic;substring_index() 二.表结构 user 用户表 role 角色表 menu菜单表 三.SQL实现 SELECT u.u_name, r.r_name, m.m_title FROM user u LEFT JOIN role r ON u.u_role_id = ...
  • 1:定义存储过程,用于分隔字符串 DELIMITER $$ USE `mess`$$ DROP PROCEDURE IF EXISTS `splitString`$$ CREATE DEFINER=`root`@`%` PROCEDURE `splitString`(IN f_string VARCHAR(1000),IN f_delimiter VARCHAR(5...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,299
精华内容 2,119
关键字:

mysql.help_topic

mysql 订阅