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


相关推荐

  • 卡尔曼滤波算法详细推导

    卡尔曼滤波算法详细推导一、预备知识1、协方差矩阵是一个维列向量,是的期望,协方差矩阵为可以看出协方差矩阵都是对称矩阵且是半正定的协方差矩阵的迹是的均方误差2、用到的两个矩阵微分公式公式一:公式二:若是对称矩阵,则下式成立…

    2022年6月14日
    47
  • 镁光硬盘测试软件,镁光固态硬盘评测[通俗易懂]

    镁光硬盘测试软件,镁光固态硬盘评测[通俗易懂]镁光M500DC企业级120G固态硬盘前言近期NAND市场为值友所喜闻乐见,3DTLC大幅度跳水,越来越多厂商加入瓜分市场的行列,加之QLC即将大量问世,M.2接口的SSD即将冲破1元1G的大关。在此情景下,SATA口SSD在各类值得买爆款里随便挑一款不失为一个很好的选择,然而对于不少值友,TLC的寿命、写入放大、全盘模拟SLC导致后期掉速、黑白片拆机ufs等诸多问题的存在,终究无法满足其苛刻的…

    2022年6月22日
    46
  • 对全连接层(fully connected layer)的通俗理解

    对全连接层(fully connected layer)的通俗理解我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~定义…

    2022年6月16日
    37
  • Deepin安装MariaDB数据库

    Deepin安装MariaDB数据库在deeping上安装mariadb 1,安装的官网参考:有安装的命令和指导https://downloads.mariadb.org/mariadb/repositories/#distro=Debian&distro_release=jessie–jessie&mirror=tuna&version=10.4其主官网地址:https://downloads.mariadb.org/  2,安装mari…

    2022年5月11日
    44
  • Python 求圆的面积[通俗易懂]

    Python 求圆的面积[通俗易懂]r=int(input(‘输入半径值:’))area=3.1415*r*rprint(area)#保留小数点后两位print(‘{:.2f}’.format(area))“`

    2025年8月19日
    2
  • vue + element 创建

    vue + element 创建vue + element 创建

    2022年4月23日
    80

发表回复

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

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