1、表的结构:​

create table A(proj_dept varchar(30));create table B(dept_id int,dept_name varchar(30));insert into A values('2,3,4'),('2,4,5'),('3,4,6');insert into B values(2,'部门2'),(3,'部门3'),(4,'部门4'),(5,'部门5'),(6,'部门6');
mysql> select * from A;
+-----------+
| proj_dept |
+-----------+
| 2,3,4 |
| 2,4,5 |
| 3,4,6 |
+-----------+
3 rows in set (0.01 sec)mysql> select * from B;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
| 2 | 部门2 |
| 3 | 部门3 |
| 4 | 部门4 |
| 5 | 部门5 |
| 6 | 部门6 |
+---------+-----------+
5 rows in set (0.02 sec)

2、问题:
A表中的proj_dept字段包含了多个B表中的,用逗号分隔的dept_id,那么要如何实现A表和B表的关联?

3、解决方法:

select * from A,B
where concat(',',A.proj_dept,',') like concat('%,',cast(B.dept_id as char),',%')
order by proj_dept,dept_id;
mysql> select * from A,B-> where concat(',',A.proj_dept,',') like concat('%,',cast(B.dept_id as char),',%')-> order by proj_dept,dept_id;
+-----------+---------+-----------+
| proj_dept | dept_id | dept_name |
+-----------+---------+-----------+
| 2,3,4 | 2 | 部门2 |
| 2,3,4 | 3 | 部门3 |
| 2,3,4 | 4 | 部门4 |
| 2,4,5 | 2 | 部门2 |
| 2,4,5 | 4 | 部门4 |
| 2,4,5 | 5 | 部门5 |
| 3,4,6 | 3 | 部门3 |
| 3,4,6 | 4 | 部门4 |
| 3,4,6 | 6 | 部门6 |
+-----------+---------+-----------+
9 rows in set (0.01 sec)

转载于:https://www.cnblogs.com/momogua/p/8304438.html

SQL编程:模糊表关联不求人 --- concat + like就能行相关推荐

  1. SQL语句多表关联查询语法

    **sql语句多表关联查询语法** 一.外连接 1.左连接 left join 或 left outer join SQL语句:select * from student left join scor ...

  2. sql 忽略大小写_Flink使用Calcite解析Sql做维表关联(一)

    点击箭头处"蓝色字",关注我们哦!! 维表关联是离线计算或者实时计算里面常见的一种处理逻辑,常常用于字段补齐.规则过滤等,一般情况下维表数据放在MySql等数据库里面,对于离线计算 ...

  3. 通过图表简化sql语句的表关联

    在之前的博文中分享过一个执行了两天的一条sql语句,走了两个大表的扫描,导致执行时间很长,通过简化sql做了不小的改进,今天我们来看看还可以做些什么. 上次简化后的语句如下: with tmp_log ...

  4. 20,sql 测试 : 1.4g 文件的 sql 运行测试,表关联,日期转换,字符编码,乱码解决,程序的 shell 执行,字符串转数字,三个隐式转换,用列分区,输出,sum over

    一 ,基础操作 : 1 ,表关联 : select stock.area,goods.smallLei,goods.typeColorId,weekofyear(to_date(stock.sellD ...

  5. 【数据库】sql实现两表关联更新

    postgresql 实现两表关联更新 UPDATE (要更新的表) table1 t1 SET t1.字段1 = t2.字段1, t1.字段2 = t2.字段2, FROM(数据来源表) table ...

  6. sql两张表关联按表日期取最近

    需求:按照两个表的日期找到相对应b表的结束时间减去b表的开始时间查询相关相减的值, 在关联a表最接近b开始的时间进行关联 id time group                xxx 1 2022 ...

  7. SQL语言多表关联查询

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) ...

  8. sql,两个表关联,根据B表更新A表

    表A 有 ID 和NAME 表A 的ID为空 表B也是ID和NAME如何通过表B的NAME和ID,填入表A的 ID A表 表BID NAME ID NAME N 1 L M 2 N L 3 M就是将表 ...

  9. sql三个表关联查询LEFT JOIN

    SELECT 别名1.字段1,别名1.字段2,别名2.字段1,别名2.字段2,别名3.字段1,别名3.字段2 FROM 表名1AS 别名1 LEFT JOIN 表名2AS 别名2 ON 别名1.字段1 ...

最新文章

  1. ECS应用管理最佳实践
  2. 动态生成RadialMenuContainer
  3. caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
  4. what you should do when you are alone
  5. Java开发技巧:Java如何编译运行?
  6. P1742 最小圆覆盖
  7. 软件工程导论团队项目
  8. 1010 一元多项式求导 (25分)
  9. 信息学奥赛一本通 1180 | 1946:【09NOIP普及组】分数线划定 | OpenJudge NOI 1.10 05 | 洛谷 P1068 [NOIP2009 普及组] 分数线划定
  10. 去中心化究竟是什么意思?
  11. 为什要学习烹饪?学习烹饪迫在眉睫
  12. C# 各种常用集合类型的线程安全版本
  13. openSUSE 安装 Torch
  14. 深入Atlas系列:客户端网络访问基础结构(上) - WebRequest的工作流程与生命周期...
  15. Zoiper Iphone android 通话推荐设置!
  16. Php把ts转为mp4,ts文件转换为mp4文件软件电脑版下载
  17. Bayesian Learning via Stochastic Gradient Langevin Dynamics
  18. Spring aop开发步骤
  19. 分布式认知工业互联网赋能工业企业数字化转型
  20. 三层架构中网关在核心与汇聚的区别和实验

热门文章

  1. golang中的测试命令
  2. gin自定义HTTP配置
  3. C#语言学习思维导图
  4. Linux开启动过程详解
  5. 无参数的构造函数如何声明对象?
  6. 常考数据结构与算法:螺旋矩阵m*n
  7. spring源码学习一
  8. 《spring揭秘》读书笔记一
  9. go微服务框架-gomicro试用
  10. ubuntu 启动器