mysql 联合查询

原文链接:https://www.cpweb.top/978

  UNION 操作符可以对查询进行并运算,ALL 参数表示运算结果包括重复行。使用 UNION 运算的所有查询,必须符合在其目标列表中有相同数目的表达式。
  语法格式:
    select_1 union [all] select_2 { union [all] select_3 } …
  例如,查询专业为软件技术或者计算机网络技术的学生信息。

mysql> select * from student where specialty='软件技术' 
       union all 
       select * from student where specialty='计算机网络技术';
+------------+-----------+-----+------------+-----------------------+---------+
| Sid        | Sname     | Sex | Birthdate  | Specialty             | AScores |
+------------+-----------+-----+------------+-----------------------+---------+
| 2011216007 | 张锋      || 1992-09-03 | 软件技术              |   389.0 |
| 2011216111 | 吴秋娟    || 1992-08-05 | 软件技术              |   408.0 |
| 2011216112 | 穆金华    || 1992-10-06 | 软件技术              |   365.0 |
| 2012216056 | 刘明明    || 1994-10-09 | 软件技术              |   357.0 |
| 2012216057 | 孙政先    || 1993-05-16 | 软件技术              |   362.5 |
| 2012216058 | 王婷      || 1994-04-13 | 软件技术              |   356.0 |
| 2011216115 | 张欣欣    || 1992-04-12 | 计算机网络技术        |   315.5 |
| 2011216117 | 孟霞      || 1993-01-11 | 计算机网络技术        |   334.0 |
| 2012216088 | 吕文昆    || 1993-09-03 | 计算机网络技术        |   335.0 |
| 2012216089 | 姜丽丽    || 1994-10-18 | 计算机网络技术        |   368.0 |
+------------+-----------+-----+------------+-----------------------+---------+

  使用 UNION 实现全外连接,当然因为数据这个全外连接和左外连接结果没有什么区别

mysql> select * from student left join sc on student.sid=sc.sid 
       union 
       select * from student right join sc on student.sid=sc.sid;
+------------+-----------+------+------------+-----------------------+---------+------------+----------+--------+
| Sid        | Sname     | Sex  | Birthdate  | Specialty             | AScores | Sid        | Cid      | Scores |
+------------+-----------+------+------------+-----------------------+---------+------------+----------+--------+
| 2011216001 | 赵成刚    || 1992-05-05 | 计算机应用技术        |   405.0 | 2011216001 | 16020010 |   96.0 |
| 2011216001 | 赵成刚    || 1992-05-05 | 计算机应用技术        |   405.0 | 2011216001 | 16020011 |   80.0 |
| 2011216002 | 李婧      || 1992-01-06 | 计算机应用技术        |   395.5 | 2011216002 | 16020010 |   67.0 |
| 2011216003 | 郭洪亮    || 1992-04-12 | 计算机应用技术        |   353.0 | 2011216003 | 16020012 |   78.0 |
| 2011216003 | 郭洪亮    || 1992-04-12 | 计算机应用技术        |   353.0 | 2011216003 | 16020013 |   87.0 |
| 2011216003 | 郭洪亮    || 1992-04-12 | 计算机应用技术        |   353.0 | 2011216003 | 16020014 |   85.0 |
| 2011216004 | 吕珊珊    || 1993-10-11 | 计算机信息管理        |   353.0 | NULL       | NULL     |   NULL |
| 2011216005 | 高全英    || 1993-07-05 | 计算机信息管理        |   387.5 | NULL       | NULL     |   NULL |
| 2011216006 | 赫莎      || 1991-08-03 | 计算机信息管理        |   372.0 | NULL       | NULL     |   NULL
......

  UNION 操作符和 JOIN 操作符的区别和联系:UNION 是将相同列的若干条数据行进行合并,而 JOIN 是将两个或多个表的若干个列进行连接。二者都是进行连接操作,但是一个是对行进行操作,另一个是对列进行操作。

  文章大部分内容来源:《 SQL Server 2008 R2 数据库技术及应用(第3版)》。以上内容基于数据库版本mysql 5.7.28。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值