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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java出现中文乱码_JAVA中文显示乱码问题「建议收藏」

    java出现中文乱码_JAVA中文显示乱码问题「建议收藏」在基于JAVA的编程中,经常会碰到汉字显示乱码的问题,经一番查询现总结如下。在JSP中建议网页编码方式用GBK,这样会方便一些。这个问题是因为JAVA编码方式转换出现了问题,Java中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码,故会出现此问题。我知道一定有很多朋友也会碰到这个问题,所以特就总结了一下,来拿出来让大家一起分享了。自己也做个备忘。…

    2022年7月8日
    16
  • pycharm2021年激活码刚出【注册码】

    pycharm2021年激活码刚出【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    38
  • 用心做软件—细节决定成败「建议收藏」

    用心做软件—细节决定成败「建议收藏」软件是什么?也许在编程者的眼中这是自己智慧的结晶,是技术运用的成果。但是在用户的眼中呢,用户会在乎你到底用了多少高级的技术、用了什么前卫的技术吗?我想大部分用户是不会管的,无论你是C#做的,Java做的,C++还是C做的,你的系统是Windows还是Linux,android还是塞班。用户的眼中你的软件只是一件产品,那么既然是产品,就要有价值,要能为用户带来方便,能为用户解决问题。当今的互联网上,

    2022年9月23日
    0
  • 淘宝核心系统团队博客在哪_团队理念

    淘宝核心系统团队博客在哪_团队理念http://rdc.taobao.com/blog/cs/?paged=2这是 淘宝核心系统团队的博客,核心系统团队的总目标是为淘宝和阿里集团打造一个高性能、高可扩展、低碳、低成本、稳定可靠的软件基础设施平台。目前的主要工作领域如下图所示:

    2022年8月13日
    3
  • idea 2021.9最新激活码 mac[最新免费获取]

    (idea 2021.9最新激活码 mac)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1STL…

    2022年3月27日
    64
  • alibaba String转json转map

    alibaba String转json转mapalibabaString转json转mappom <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>调用HashMaphash

    2022年5月13日
    32

发表回复

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

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