mysql 联合查询_MySQL联合查询

mysql 联合查询_MySQL联合查询MySQL联合查询联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。基本语法联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。基本语法:select语句1+union+[union选项]+select语句2+…;union选项:与select选项一样有两种all:无论重复…

大家好,又见面了,我是你们的朋友全栈君。

MySQL联合查询

联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。

基本语法

联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。

基本语法:select 语句1 + union + [union选项] + select 语句2 + …;

union 选项:与select选项一样有两种

all:无论重复与否,保留所有记录;

distinct:表示去重,为默认选项。

执行如下 SQL 语句,进行测试:

— 联合查询,默认去重

select * from class

union distinct

select * from class;

— 联合查询,保留所有记录

select * from class

union all

select * from class;

a564e83e784350d2e1aa4b9b3a6c18e7.png

如上图所示,展示了联合查询的两种形式。特别地,联合查询只要求字段数相同,而跟类型无关。执行如下 SQL 语句,进行测试:

— 联合查询,字段数相同,类型不同

select id, grade, room from class

union distinct

select name, age, id from student;

1dc714d5add352db6cf580e7350ab9dc.png

如上图所示,联合查询只保留了第一张表的字段,而不保留第二张表的字段。

意义

联合查询的意义有两种,分别为:

查询同一张表,按时需要不同,例如查询学生信息,要求男生按年龄升序排序,女生按年龄降序排序;

多表查询,多张表的结构是完全一样的,保持的数据结构也是一样的。

此外,如果数据量非常的大,就要进行分表(垂直分表和水平分表),而分表的依据无外乎数据多不多和常不常用。

排序

首先,让我们看看student表中的数据:

7fa388a8a6751ec181f86fb4aaee66a3.png

接下来,给出一个需求: 在student表中,让男生按年龄升序排序,让女生按年龄降序排序。根据我们刚刚学到的联合查询,貌似很容易啊!执行如下 SQL 语句,进行测试:

— 在 student 表中,按年龄,男升女降

select * from student where gender = “boy” order by age asc

union

select * from student where gender = “girl” order by age desc;

aa10257a3ebe363f85fab20777cf77f6.png

如上图所示,呃,好吧,貌似出错啦!这是因为要想在联合查询中使用order by,我们必须将select语句用括号括起来。执行如下 SQL 语句,进行测试:

— 在 student 表中,按年龄,男升女降

(select * from student where gender = “boy” order by age asc)

union

(select * from student where gender = “girl” order by age desc);

071bbaf82db3391e364b7b7e700f9ba9.png

如上图所示,啊,我们都已经将select语句用括号括起来了,但是男生和女生也没有按我们的目的实现啊!好吧,这是因为要想在联合查询中使order by生效,我们必须将其与limit搭配使用,而limit的限定数,我们设置为一个非常大的数即可。执行如下 SQL 语句,进行测试:

— 在 student 表中,按年龄,男升女降

(select * from student where gender = “boy” order by age asc limit 666)

union

(select * from student where gender = “girl” order by age desc limit 666);

517968d6b23b1dd4587cdbc7da20a5e0.png

如上图所示,显然,这次咱们的目的实现啦!

温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132518.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL保留小数点前面的0 round trunc 上取整,下取整[通俗易懂]

    SQL保留小数点前面的0 round trunc 上取整,下取整[通俗易懂]SELECTto_char(.2,’90.00′)FROMdual;SELECTto_char(.2,’00.00′)FROMdual;SELECTto_char(.2,’99.99′)FROMdual;SELECTto_char(.2,’90.99′)FROMdual;SELECTDECODE(substr(.2,1,1),’.’,0||.2,.2)F

    2022年7月20日
    33
  • runtime错误解决方案_完美解决Office1402错误

    runtime错误解决方案_完美解决Office1402错误8000401a错误解决方案(OfficeWord,Excel,PowerPoit应用程序无法访问)

    2022年8月22日
    4
  • java环境教程_java环境配置的详细教程(图文)

    java环境教程_java环境配置的详细教程(图文)本篇文章给大家带来的内容是关于java环境配置的详细教程(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。JAVA环境变量的配置:Path,JAVA_HOME,CLASSPATH一、右键我的电脑,属性,高级系统设置,点击环境变量二、然后就会弹出环境变量这个窗口,在系统变量编辑JAVA_HOME,如果没有就新建一个,把jkd的路径添加进去,如图三、配置CASSPATH,如果没有…

    2022年7月7日
    28
  • artcam浮雕实例教程_artcam2018入门教程

    artcam浮雕实例教程_artcam2018入门教程记录过去,奋斗现在,展望未来(给未来即将结束的工作的’存档’)ArtCAM入门简单教程二、浮雕前言:这不是个很专业的浮雕设计教程,不过是很简单即可实现的入门教程,而更深入的浮雕学习建议查找更全面的网上教程或CAM浮雕书籍。   常用的矢量雕刻,详见:http://blog.sina.com.cn/s/blog_647ef76d0101jgwn.html开始之

    2022年9月5日
    2
  • JDBC prepareStatement 与Statement的区别

    JDBC prepareStatement 与Statement的区别

    2021年10月3日
    48
  • 游戏3d模型如何放到计算机中,三维建模技术在三维游戏中的应用

    游戏3d模型如何放到计算机中,三维建模技术在三维游戏中的应用张程怡摘要计算机图像技术及三维建模技术的不断发展,是三维游戏出现的重要原因之一。三维建模技术可以将现实中的物品和人在二维平面进行三维形态的模拟或再加工,达到将美术设计和计算机技术有机结合的效果,给人立体真实的感受。因此在三维游戏的制造过程中,三维建模技术得到了广泛应用。文章对三维建模技术的发展历程,三维建模技术在游戏中的运用原理进行了介绍,同时对于三维建模技术在三维游戏应用中仍存的问题及其发展…

    2022年5月12日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号