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)


  • 相关阅读:
    OA学习笔记-009-岗位管理的CRUD
    OA学习笔记-008-岗位管理Action层实现
    OA学习笔记-007-Dao层设计
    OA学习笔记-006-SPRING2.5与hibernate3.5整合
    OA学习笔记-005-Spring2.5与struts2.1整合
    OA学习笔记-004-Spring2.5配置
    OA学习笔记-003-Hibernate3.6配置
    OA学习笔记-002-Sruts2.1配置
    OA学习笔记-001-项目介绍
    Swift
  • 原文地址:https://www.cnblogs.com/momogua/p/8304438.html
Copyright © 2011-2022 走看看