zoukankan      html  css  js  c++  java
  • mysql 多个关联查询

    ## 表结构 ##
    tbl_a
    +-------+---------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | aaa | int(11) | YES | | NULL | |
    | bbb | int(11) | YES | | NULL | |
    | ccc | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+----------------+

    CREATE TABLE `tbl_a` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `aaa` int(11) DEFAULT NULL,
    `bbb` int(11) DEFAULT NULL,
    `ccc` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

    tbl_b
    +-------+--------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | k | int(11) | NO | | NULL | |
    | v | varchar(255) | NO | | NULL | |
    +-------+--------------+------+-----+---------+-------+

    CREATE TABLE `tbl_b` (
    `k` int(11) NOT NULL,
    `v` varchar(255) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ## 表数据 ##

    select * from tbl_a;
    +----+-----+-----+-----+
    | id | aaa | bbb | ccc |
    +----+-----+-----+-----+
    | 1 | 3 | 4 | 5 |
    +----+-----+-----+-----+

    select * from tbl_b;
    +---+------+
    | k | v |
    +---+------+
    | 3 | sad |
    | 4 | cat |
    | 5 | fast |
    +---+------+


    ## 查询语句 1 ##

    SELECT id, (SELECT v FROM tbl_b WHERE k = aaa)as aaa, (SELECT v FROM tbl_b WHERE k = bbb)as bbb, (SELECT v FROM tbl_b WHERE k = ccc)as ccc from tbl_a;
    SELECT id,
    (SELECT v FROM tbl_b WHERE k = aaa)as aaa, 
    (SELECT v FROM tbl_b WHERE k = bbb)as bbb, 
    (SELECT v FROM tbl_b WHERE k = ccc)as ccc 
    from tbl_a;

    +----+-----+-----+------+
    | id | aaa | bbb | ccc |
    +----+-----+-----+------+
    | 1 | sad | cat | fast |
    +----+-----+-----+------+

    ## 查询语句 2 ##

    select ifnull((select b.v id from tbl_b b where b.k=a.id), a.id ) id, ifnull((select b.v aaa from tbl_b b where b.k=a.aaa), a.aaa) aaa, ifnull((select b.v bbb from tbl_b b where b.k=a.bbb), a.bbb) bbb,    ifnull((select b.v ccc from tbl_b b where b.k=a.ccc), a.ccc) ccc from tbl_a a ;
    select 
    ifnull((select b.v id from tbl_b b where b.k=a.id), a.id ) id, 
    ifnull((select b.v aaa from tbl_b b where b.k=a.aaa), a.aaa) aaa,
    ifnull((select b.v bbb from tbl_b b where b.k=a.bbb), a.bbb) bbb,
    ifnull((select b.v ccc from tbl_b b where b.k=a.ccc), a.ccc) ccc
    from tbl_a a ;

    +----+-----+-----+------+
    | id | aaa | bbb | ccc |
    +----+-----+-----+------+
    | 1 | sad | cat | fast |
    +----+-----+-----+------+

    ## 查询语句 3 ##

    select a.id, b.v, c.v, d.v from tbl_a as a left join tbl_b as b on a.aaa=b.k left join tbl_b as c on a.bbb=c.k left join tbl_b as d on a.ccc=d.k ;
    select a.id, b.v, c.v, d.v from tbl_a as a 
    left join tbl_b as b on a.aaa=b.k 
    left join tbl_b as c on a.bbb=c.k 
    left join tbl_b as d on a.ccc=d.k ;

    +----+-----+-----+------+
    | id | v | v | v |
    +----+-----+-----+------+
    | 1 | sad | cat | fast |
    +----+-----+-----+------+

  • 相关阅读:
    c++下使用邮槽实现进程间通信
    c++下基于windows socket的多线程服务器(基于TCP协议)
    C++实现线程同步的几种方式
    c++多线程编程:实现标准库accumulate函数的并行计算版本
    c++多线程在异常环境下的等待
    c++下基于windows socket的服务器客户端程序(基于UDP协议)
    c++下基于windows socket的单线程服务器客户端程序(基于TCP协议)
    C++解决error C4996报错
    Python读取UTF-8编码文件并使用命令行执行时输出结果的问题
    P4655 [CEOI2017]Building Bridges 题解
  • 原文地址:https://www.cnblogs.com/qdqn/p/3009367.html
Copyright © 2011-2022 走看看