温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL数据库之怎么联合查询

发布时间:2022-06-01 13:46:50 来源:亿速云 阅读:212 作者:iii 栏目:开发技术

这篇文章主要介绍了MySQL数据库之怎么联合查询的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL数据库之怎么联合查询文章都会有所收获,下面我们一起来看看吧。

前言:

将多个查询结果的结果集合并到一起(纵向合并),字段数不变,多个查询结果的记录数合并

1、应用场景

  • 同一张表中不同结果合并到一起展示:男生升高升序,女生升高降序

  • 数据量较大的表,进行分表操作,将每张表的数据合并起来显示

2、基本语法

select 语句 union [union 选项] select 语句;

union 选项 和select 选项基本一致

  • distinct 去重,默认

  • all 保存所有结果

mysql> select * from my_student; +----+--------+----------+------+--------+ | id | name   | class_id | age  | gender | +----+--------+----------+------+--------+ |  1 | 刘备   |        1 |   18 |      2 | |  2 | 李四   |        1 |   19 |      1 | |  3 | 王五   |        2 |   20 |      2 | |  7 | 张飞   |        2 |   21 |      1 | |  8 | 关羽   |        1 |   22 |      2 | |  9 | 曹操   |        1 |   20 |   NULL | +----+--------+----------+------+--------+ -- 默认选项:distinct select * from my_student union select * from my_student; +----+--------+----------+------+--------+ | id | name   | class_id | age  | gender | +----+--------+----------+------+--------+ |  1 | 刘备   |        1 |   18 |      2 | |  2 | 李四   |        1 |   19 |      1 | |  3 | 王五   |        2 |   20 |      2 | |  7 | 张飞   |        2 |   21 |      1 | |  8 | 关羽   |        1 |   22 |      2 | |  9 | 曹操   |        1 |   20 |   NULL | +----+--------+----------+------+--------+ select * from my_student union all select * from my_student; +----+--------+----------+------+--------+ | id | name   | class_id | age  | gender | +----+--------+----------+------+--------+ |  1 | 刘备   |        1 |   18 |      2 | |  2 | 李四   |        1 |   19 |      1 | |  3 | 王五   |        2 |   20 |      2 | |  7 | 张飞   |        2 |   21 |      1 | |  8 | 关羽   |        1 |   22 |      2 | |  9 | 曹操   |        1 |   20 |   NULL | |  1 | 刘备   |        1 |   18 |      2 | |  2 | 李四   |        1 |   19 |      1 | |  3 | 王五   |        2 |   20 |      2 | |  7 | 张飞   |        2 |   21 |      1 | |  8 | 关羽   |        1 |   22 |      2 | |  9 | 曹操   |        1 |   20 |   NULL | +----+--------+----------+------+--------+ -- 只需要保证字段数量一样,不需要每次拿到的数据类型都一样 -- 只保留第一个select的字段名 select id, name, age from my_student union all select name, id, age  from my_student; +--------+--------+------+ | id     | name   | age  | +--------+--------+------+ | 1      | 刘备   |   18 | | 2      | 李四   |   19 | | 3      | 王五   |   20 | | 7      | 张飞   |   21 | | 8      | 关羽   |   22 | | 9      | 曹操   |   20 | | 刘备   | 1      |   18 | | 李四   | 2      |   19 | | 王五   | 3      |   20 | | 张飞   | 7      |   21 | | 关羽   | 8      |   22 | | 曹操   | 9      |   20 | +--------+--------+------+

3、order by的使用

联合查询中,使用order by, select语句必须使用括号

(select * from my_student where gender = 1 order by age desc) union (select * from my_student where gender = 2 order by age asc); +----+--------+----------+------+--------+ | id | name   | class_id | age  | gender | +----+--------+----------+------+--------+ |  2 | 李四   |        1 |   19 |      1 | |  7 | 张飞   |        2 |   21 |      1 | |  1 | 刘备   |        1 |   18 |      2 | |  3 | 王五   |        2 |   20 |      2 | |  8 | 关羽   |        1 |   22 |      2 | +----+--------+----------+------+--------+ -- order by 要生效,必须使用limit 通常大于表的记录数 (select * from my_student where gender = 1 order by age desc limit 10) union (select * from my_student where gender = 2 order by age asc limit 10); +----+--------+----------+------+--------+ | id | name   | class_id | age  | gender | +----+--------+----------+------+--------+ |  7 | 张飞   |        2 |   21 |      1 | |  2 | 李四   |        1 |   19 |      1 | |  1 | 刘备   |        1 |   18 |      2 | |  3 | 王五   |        2 |   20 |      2 | |  8 | 关羽   |        1 |   22 |      2 | +----+--------+----------+------+--------+

关于“MySQL数据库之怎么联合查询”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL数据库之怎么联合查询”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI