mysql行转列(拆分字符串场景)

mysql行转列(拆分字符串场景)一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法

大家好,又见面了,我是你们的朋友全栈君。

一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法像一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法。如下图:

mysql行转列(拆分字符串场景)

如何才能直接用sql语句查询出下图的效果呢?

mysql行转列(拆分字符串场景)

可以借助一个序号表,该表中除了连续的id没有其它字段,id的值范围取决于”一”中存储的信息拆分后的数量。

mysql行转列(拆分字符串场景)

实现sql:

SELECT
	NAME,
	REPLACE(
		SUBSTRING_INDEX(mobile, ',', a.id),
		CONCAT(
			SUBSTRING_INDEX(mobile, ',', a.id - 1),
			','
		),
		''
	)AS mobile
FROM
	squence a
CROSS JOIN(
	SELECT
		NAME,
		CONCAT(mobile, ',')AS mobile,
		LENGTH(mobile)- LENGTH(REPLACE(mobile, ',', ''))+ 1 AS size
	FROM
		`user`
)b ON a.id <= b.size

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139984.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 集合类型python_python需要学哪些

    集合类型python_python需要学哪些集合集合的特点:是一种可迭代的、无序的、不能包含重复元素的数据结构去重b=[10,5,6,1,9,1]c=set(b)print(c)>>>{1,5

    2022年8月6日
    3
  • 淘宝自动抢购脚本「建议收藏」

    淘宝自动抢购脚本「建议收藏」淘宝自动抢购脚本抢购脚本是通过Selenium来完成自动登录,和自动点击的操作的。Selenium是一个用于Web应用程序测试的工具,Selenium可以直接运行在浏览器中,通过后台控制操作浏览器,完成购买操作。教程需要安装python环境,安装python环境可参考链接安装python完后记得配置环境和安装Pycharm编辑器(安装Pycharm可参考)一、安装Selenium库Selenium模块是Python的第三方库,可以通过pip进行安装:pip3installselen

    2022年4月29日
    634
  • 掩日免杀笔记_在线笔记

    掩日免杀笔记_在线笔记微信公众号:乌鸦安全扫取二维码获取更多信息!1.环境攻击机:kalilinux10.211.55.23受害机:Windows10360主动防御Windows7火绒主动防御2.生成exe文件在kalilinux下使用msfvenom生成一个64位的exe文件msfvenom-pwindows/x64/meterpreter/reverse_tcplhost=10.211.55.23lport=4444-fexe…

    2022年8月22日
    6
  • pycharm是下载社区版本的还是专业版本_pycharm免费版和专业版

    pycharm是下载社区版本的还是专业版本_pycharm免费版和专业版好多初用pycharm的朋友,不知道PyCharm专业版和PyCharm社区版的区别,总体而说pycharmpro2019mac是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。…

    2022年8月29日
    2
  • python之运算符

    运算符的定义运算符类型1.算数运算符2.比较运算符3.赋值运算符4.位运算符5.逻辑运算符6.成员运算符7身份运算符详情介绍1算数运算2比较运算3赋值运算4位运算:5逻辑运

    2022年3月29日
    43
  • java程序出现问题:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

    java程序出现问题:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定异常提示是并非所有变量都已绑定,实际上从sql语句上看是没有问题,直接使用在数据库也是有效的,那么他为什么会报ORA-01008:并非所有变量都已绑定,这个这个问题一般出现在sql语句,因为程序写的sql语句可能出现所查询没有的字段,而此处sql语句没有错误,出问题的地方是preparedStatemnt.executeUpdate(sql)这条语句,这是使用PreparedStateme…

    2025年9月2日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号