MySQL中的联合查询

技术交流QQ群:1027579432,欢迎你的加入!

联合查询

  • 联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接
  • 联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关
  • 基本语法:select 语句1 + union + [union选项] + select 语句2 + ...;
    • union选项:
      • all:无论重复与否,保留所有记录;
      • distinct:表示去重,为默认选项。
  • 联合查询,默认去重
    mysql> SELECT * FROM class
        -> UNION DISTINCT
        -> SELECT * FROM class;
    +----+-------+------+
    | id | grade | room |
    +----+-------+------+
    |  1 |   3.1 | A    |
    |  2 |   3.2 | B    |
    |  3 |   3.4 | C    |
    +----+-------+------+
    3 rows in set (0.00 sec)
  • 联合查询,保留所有记录
    mysql> SELECT * FROM class
        -> UNION ALL
        -> SELECT * FROM class;
    +----+-------+------+
    | id | grade | room |
    +----+-------+------+
    |  1 |   3.1 | A    |
    |  2 |   3.2 | B    |
    |  3 |   3.4 | C    |
    |  1 |   3.1 | A    |
    |  2 |   3.2 | B    |
    |  3 |   3.4 | C    |
    +----+-------+------+
    6 rows in set (0.00 sec)
  • 联合查询只要求字段数相同,而跟类型无关。联合查询只保留了第一张表的字段,而不保留第二张表的字段。
    mysql> SELECT id, grade, room FROM class
        -> UNION DISTINCT
        -> SELECT name, age, id FROM student;
    +--------+--------------------+------+
    | id     | grade              | room |
    +--------+--------------------+------+
    | 1      | 3.0999999046325684 | A    |
    | 2      |  3.200000047683716 | B    |
    | 3      | 3.4000000953674316 | C    |
    | curry  |                 30 | 1    |
    | durant |                 29 | 2    |
    | Riuo   |                 27 | 3    |
    | harden |                 29 | 4    |
    +--------+--------------------+------+
    7 rows in set (0.04 sec)
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-24 20:25
腾讯今年实习招了这么多人,后面秋招还会招人吗??想着秋招再战来着
牛客965593684号:腾讯好像2020年之后就是实习生招得多,应届生基本上不招,纯实习转正
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-25 17:22
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务