mysql.help_topic
mysql.help_topic 表 ,以 字符 规则拆分,将 单列 转为 多行 显示。
示例:
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX('1,2,3,4,5',',',help_topic_id + 1),',' ,- 1) duohang
FROM
mysql.help_topic
WHERE
help_topic_id < (LENGTH('1,2,3,4,5')) - LENGTH(REPLACE ('1,2,3,4,5', ',', '')) + 1;
结果:
应用场景:
当两个关系表中的字段不是一对一,而是一对多的时候。需要进行关联查询的时候,可用。
表结构:
此内容查看价格为9念币立即购买(VIP免费)立即升级
会员属于虚拟产品,一旦购买,不接受任何形式的退款。请根据需求理性消费。您的打赏、会员充值等,都可以给网站带来可持续发展的动力!目前只支持支付宝付款,给您带来不便请见谅!权限说明:
菜单编码,以字符串的方式存储在 系统用户扩展表 中。
需求:
根据 系统用户扩展表,查询用户包含哪些菜单。
实现语句:
select sm.* from
(
select substring_index(substring_index(same.sys_menu_numbers,",",mht.help_topic_id + 1),",", -1) menu_number
from sys_admin_menu_extend same
join mysql.help_topic mht
on mht.help_topic_id <(length(same.sys_menu_numbers) - length(replace(same.sys_menu_numbers,",","")) + 1)
where same.sys_admin_id = 1
)t,sys_menu sm
where sm.menu_number = t.menu_number
结果:
注意事项:
以上语句是直接在navicat中执行的,当你要放在mapper.xml文件中时,要注意 “<” 的转义格式。否则会报错,不能识别。
第一种方式:
修改后:
select sm.* from
(
select substring_index(substring_index(same.sys_menu_numbers,",",mht.help_topic_id + 1),",", -1) menu_number
from sys_admin_menu_extend same
join mysql.help_topic mht
on mht.help_topic_id <(length(same.sys_menu_numbers) - length(replace(same.sys_menu_numbers,",","")) + 1)
where same.sys_admin_id = 1
)t,sys_menu sm
where sm.menu_number = t.menu_number
第二种方式:
增加声明标志:
<![CDATA[]]>
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,后台会原样解析并执行
修改后:
select sm.* from
(
select substring_index(substring_index(same.sys_menu_numbers,",",mht.help_topic_id + 1),",", -1) menu_number
from sys_admin_menu_extend same
join mysql.help_topic mht
<![CDATA[
on mht.help_topic_id <(length(same.sys_menu_numbers) - length(replace(same.sys_menu_numbers,",","")) + 1)
]]>
where same.sys_admin_id = 1
)t,sys_menu sm
where sm.menu_number = t.menu_number
评论前必须登录!
注册