zoukankan      html  css  js  c++  java
  • SQL编程:模糊表关联不求人 ---> concat + like就能行

    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)


  • 相关阅读:
    Python制作天气查询软件【python实战必学】
    Python妹子图爬虫实战项目【新手必学】
    Python超级无敌技巧分享
    PlaySound使用进阶
    【】2019
    【】风之忧伤
    delete[]和delete
    《windows程序设计 第五版》实例
    playsound函数用法
    【Python入门自学笔记专辑】——Python跳转语句和循环使用范围
  • 原文地址:https://www.cnblogs.com/momogua/p/8304438.html
Copyright © 2011-2022 走看看