• 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)

     

  • 相关阅读:
    获取数字的位数
    使用json把php数据传给js处理
    Java实现带括号优先级的计算器
    Java使用正则表达式解析LRC歌词文件
    Android开发环境搭建:离线安装ADT插件和安装SDK
    【转】C语言快速幂取模算法小结
    【转】Java高手真经全套书籍分享
    10.19stark组件开发(三)
    10.18正式开发stark组件*(三)
    10.17正式开发stark项目(二)
  • 原文地址:https://www.cnblogs.com/jennyyin/p/7900903.html
Copyright © 2020-2023  润新知