首页 > 数据库 >(四)MySQL基础知识之union和排序

(四)MySQL基础知识之union和排序

时间:2022-10-03 11:03:36浏览次数:51  
标签:name union 表中 基础知识 course MySQL where id

继续连着昨天数据库的基本操作,今天看下MySQL的union功能和排序

 union: UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。如果多个 SELECT 语句会删除重复的数据。需要注意的是:

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

基本语法为:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

让我们看下,只有一列的情况(相同的一个字段)

(四)MySQL基础知识之union和排序_mysql


mysql> select name from teacher where id = 2 union select name from course where id = 6;


+---------+

| name    |

+---------+

| 李四    |

| Liulang |

+---------+

2 rows in set (0.02 sec)

将teacher表中id =2 的name字段的值和 course表中id = 6的name字段的值连起来

接下里,我们再看看多个字段且没有where条件的union

(四)MySQL基础知识之union和排序_数据_02

通过对比,teacher表中有4个数据,course表中有6个数据,为什么全部union是9个数据呢。这就需要前面说的知识,union和 union all的区别了。

union会将重复的数据删除,这里 teacher和course都有重复的数据 张三,union后将course表中重复的那条数据删除了。接下来我们用union all看下:

(四)MySQL基础知识之union和排序_数据_03

可以看到,是10条数据了,teacher和course表中的数据都在这里了。


上面说的是没有where条件语句的union使用方法,如果有where 条件语句呢

我们先看下不符合条件的用法:

mysql> select id,name,time from teacher where id > 2 union select name from course where id < 3;

ERROR 1222 (21000): The used SELECT statements have a different number of columns

mysql> select id,name,time from teacher where id > 2 union all select name from course where id < 3;

ERROR 1222 (21000): The used SELECT statements have a different number of columns

teacher表中选取了id,name和time 3列,course表中只选取了name一列,这样是不行的。如果我们选取相同列呢?

mysql> select id,name from teacher where id > 2 union all select id,name from course where id > 4;

+----+----------+

| id | name     |

+----+----------+

|  3 | 王五     |

|  4 | 赵六     |

|  5 | Shanshan |

|  6 | Liulang  |

+----+----------+

4 rows in set (0.02 sec)

这样就可以了,即使where分支语句的条件内容不一样,也不影响展示数据。其中3,4 是teacher表中的, 5,6是course表中的。


union功能说完后,我们来看看MySQL的排序功能

如果需要对读取的数据进行排序,就可以使用 MySQL 的 ORDER BY 子句来设定按照哪个字段哪种方式来进行排序,再返回搜索结果。

语法如下:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...

ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

可以使用任何字段来作为排序的条件,从而返回排序后的查询结果

可以设定多个字段来排序

可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。默认情况下,按照升序排列。

可以添加 WHERE...LIKE 子句来设置条件


我们来看下实例:

(四)MySQL基础知识之union和排序_字段_04

默认生序,我们来用下降序

(四)MySQL基础知识之union和排序_mysql_05

完美,降序成功了。

现在我们加上where条件分支语句,看下排序结果

(四)MySQL基础知识之union和排序_数据_06

很明显,where分支语句起了作用,选择 > 3的,则返回结果显示从4开始


好了,今天就讲到这里


标签:name,union,表中,基础知识,course,MySQL,where,id
From: https://blog.51cto.com/u_11894/5729940

相关文章

  • JavaWeb 中的 HTTP 基础知识
    概念:超文本传输协议,规定了浏览器和服务器之间数据传输的规则。特点:基于TCP协议,面向连接,更安全基于请求-响应模型,一次请求对应一次响应是无状态的协议,对事务处理......
  • Mysql 碎片优化,ibd文件过大优化
    一、ibd文件  我们知道ibd文件是每个数据库里面每个表的数据空间,每个表的数据和索引都会存在自已表空间中。然后建库建表,插入数据,使该表的ibd文件增大在使用mysql......
  • 11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
    logstash数据同步简介集中,转换和存储数据,logstach是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中......
  • SSTI基础知识
    我们用如下环境进行讲解(flask-jinja2):fromflaskimportFlaskfromflaskimportrender_templatefromflaskimportrequestfromflaskimportrender_template_str......
  • day03-MySQL基础知识02
    MySQL基础知识024.CRUD数据库CRUD语句:增(create)、删(delete)、改(update)、查(Retrieve)Insert语句(添加数据)Update语句(更新数据)Delete语句(删除数据)Select语句......
  • 2022-09-30 mysql列存储引擎-去除TempTableForSubquery引发的memcopy的策略
    摘要:在做子查询时, TempTableForSubquery引发大量的memcpy。本文记录消除memcpy的优化的策略。逻辑追踪:火焰图: memcpy追踪:(gdb)bt#0stonedb::core::Filter::Block:......
  • mysql绿色版在windows系统中的启动
      1、下载mysql免安装版例如:mysql-5.7.11-winx642、修改配置文件,my-default.ini名称改为:my.ini,文件里面的参数配置:[mysqld]#skip-grant-tables#Thesearecommo......
  • MySQL windows 安装:
    1.下载一个windows版本的软件:2.3.选择典型:4接着弹出框:5选择第一个:6.选择服务器模式:7.支持多数据:然后一路Next:字符集合选择utf-8:8.设置密码:9.选择Execute:出现问题参考:​​......
  • Mysql function 自定义函数,查找子节点
    ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_......
  • Spring整合Mybatis连接MySQL数据库配置 异常 情景再现
    Spring整合Mybatis连接MySQL数据库配置情景再现注意点一:数据库Table表字段和Entity实体类属性名不匹配解决:方法一:开启下划线转大驼峰命名mybatis:configurati......