zoukankan      html  css  js  c++  java
  • MySQL 联合查询

    联合查询:将多次查询(多条select语句), 在记录上进行拼接(字段不会增加)

    基本语法:多条select语句构成: 每一条select语句获取的字段数必须严格一致(但是字段类型无关)

    语法

    Select 语句1
    
    Union [union选项]
    
    Select 语句2

    Union选项: 与select选项一样有两个

    All: 保留所有(不管重复)

    Distinct: 去重(整个重复): 默认的

    例如

    -- 表一 SELECT * FROM prospect;
    +---------+-------+------------------------+
    | fname   | lname  | addr     |
    +---------+-------+------------------------+
    | Peter     | Jones  | 482 Rush St., Apt. 402 |
    | Bernice | Smith  | 916 Maple Dr.   |
    +---------+-------+------------------------+
    
    -- 表二
     SELECT * FROM customer;
    +-----------+------------+---------------------+
    | last_name | first_name | address    |
    +-----------+------------+---------------------+
    | Peterson  | Grace    | 16055 Seminole Ave. |
    | Smith      | Bernice  | 916 Maple Dr.  |
    | Brown     | Walter   | 8602 1st St.  |
    +-----------+------------+---------------------+
    
    -- 表三
     SELECT * FROM vendor;
    +-------------------+---------------------+
    | company            | street    |
    +-------------------+---------------------+
    | ReddyParts, Inc. | 38 Industrial Blvd. |
    | Parts-to-go, Ltd. | 213B Commerce Park. |
    +-------------------+---------------------+
    
    
    -- 如果所有的三个表具有不同的列名 ,查询方式
    SELECT fname, lname, addr FROM prospect
    UNION
    SELECT first_name, last_name, address FROM customer
    UNION
    SELECT company, '', street FROM vendor;
    +-------------------+----------+------------------------+
    | fname               | lname        | addr     |
    +-------------------+----------+------------------------+
    | Peter                 | Jones        | 482 Rush St., Apt. 402 |
    | Bernice              | Smith       | 916 Maple Dr.   |
    | Grace                | Peterson   | 16055 Seminole Ave. |
    | Walter               | Brown      | 8602 1st St.   |
    | ReddyParts, Inc. |                | 38 Industrial Blvd. |
    | Parts-to-go, Ltd. |                | 213B Commerce Park. |
    +-------------------+----------+------------------------+
    
    -- 如果想选择所有记录,包括重复的,请ALL的第一个UNION关键字
     SELECT fname, lname, addr FROM prospect
    -> UNION ALL
    -> SELECT first_name, last_name, address FROM customer
    -> UNION
    -> SELECT company, '', street FROM vendor;

    联合查询的意义:

    1. 查询同一张表,但是需求不同: 如查询学生信息, 男生身高升序, 女生身高降序.

    2. 多表查询: 多张表的结构是完全一样的,保存的数据(结构)也是一样的.

    Order by使用

    在联合查询中: order by不能直接使用,需要对查询语句使用括号才行;

    另外,要order by生效: 必须搭配limit: limit使用限定的最大数即可

    .

    -- 男的按年级正序排序,女的按倒叙排列
    (select *from t3 where gender="男" order by age limit 99999)
    union
    (select *from t3 where gender="女" order by age limit 99999)

     

  • 相关阅读:
    洛谷—— P1187 3D模型
    商铺项目(Redis缓存)
    商铺项目(使用DES加密配置信息)
    Linux下tomcat启动项目原因排查
    商铺项目(商品详情页开发)
    商铺项目(店铺详情页开发)
    商铺项目(店铺列表开发)
    商铺项目(首页前端开发)
    商铺项目(首页后台开发)
    商铺项目(商品类别模块二)
  • 原文地址:https://www.cnblogs.com/jennyyin/p/7900903.html
Copyright © 2011-2022 走看看