mysql中通过FIND_IN_SET函数关联表id包含多个值用逗号分隔,通过sql语句查询关联表信息
时间:2023年12月04日
/来源:网络
/编辑:佚名
之所以会用到该函数是因为在写将mysql数据使用logstash同步至es上时发现有的表关联id字段是多个id按逗号分隔,因为是用sql语句查询,不能像java中一样先查询A表然后再循环拆分id字段循环查询B表,所以需要用到FIND_IN_SET函数,下边是使用该函数的demo
现在有表A和表B,数据信息如下图所示
A表数据结构
id type_ids name
1 1,2,3 aaa
2 2,3 bbb
3 1 ccc
B表数据结构
id name
1 类型1
2 类型2
3 类型3
现在需要根据表A的typeIds关联查询到B表的name,sql语句如下
SELECT A.id, A.type_ids typeIds, GROUP_CONCAT(B.`name`) AS typeNames
FROM A
JOIN B ON FIND_IN_SET(B.id,A.type_ids)
GROUP BY A.id
这样通过关联查询便能获取到相应的类型名称
最终查询结果为
id typelds typeNames
1 1,2,3 类型1,类型2,类型3
2 2,3 类型2,类型3
3 1 类型1
现在有表A和表B,数据信息如下图所示
A表数据结构
id type_ids name
1 1,2,3 aaa
2 2,3 bbb
3 1 ccc
B表数据结构
id name
1 类型1
2 类型2
3 类型3
现在需要根据表A的typeIds关联查询到B表的name,sql语句如下
SELECT A.id, A.type_ids typeIds, GROUP_CONCAT(B.`name`) AS typeNames
FROM A
JOIN B ON FIND_IN_SET(B.id,A.type_ids)
GROUP BY A.id
这样通过关联查询便能获取到相应的类型名称
最终查询结果为
id typelds typeNames
1 1,2,3 类型1,类型2,类型3
2 2,3 类型2,类型3
3 1 类型1
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03