MySQL数据库之union,limit和子查询详解

目录
  • 1.where中的子查询
  • 2.from子句后的子查询
  • 3.union
  • 4.limit查询
  • 5.分页

1.where中的子查询

示例数据参见此文章

案例:查询比最低工资高的员工姓名和薪资

子查询,先查询子查询括号里的,再向上级进行查询

mysql> select ename,sal from emp where sal
    -> >
    -> (select min(sal) from emp);
+--------+---------+
| ename  | sal     |
+--------+---------+
| ALLEN  | 1600.00 |
| WARD   | 1250.00 |
| JONES  | 2975.00 |
| MARTIN | 1250.00 |
| BLAKE  | 2850.00 |
| CLARK  | 2450.00 |
| SCOTT  | 3000.00 |
| KING   | 5000.00 |
| TURNER | 1500.00 |
| ADAMS  | 1100.00 |
| JAMES  |  950.00 |
| FORD   | 3000.00 |
| MILLER | 1300.00 |
+--------+---------+
13 rows in set (0.02 sec)

2.from子句后的子查询

from后面的子查询,可以将子查询的查询结果当作一张临时表来看待

案例:找出每个岗位的平均薪资的薪资等级

mysql> select
    -> t.*,s.grade
    -> from
    -> (select job,avg(sal) as avgsal from emp group by job) t
    -> join salgrade s
    -> on
    -> t.avgsal between s.losal and s.hisal;
+-----------+-------------+-------+
| job       | avgsal      | grade |
+-----------+-------------+-------+
| CLERK     | 1037.500000 |     1 |
| SALESMAN  | 1400.000000 |     2 |
| MANAGER   | 2758.333333 |     4 |
| ANALYST   | 3000.000000 |     4 |
| PRESIDENT | 5000.000000 |     5 |
+-----------+-------------+-------+
5 rows in set (0.00 sec)

3.union

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

MySQL UNION 操作符语法格式:

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

参数

  • expression1, expression2, ... expression_n: 要检索的列。
  • tables: 要检索的数据表。
  • WHERE conditions: 可选, 检索条件。
  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT修饰符对结果没啥影响。
  • ALL: 可选,返回所有结果集,包含重复数据。

案例:查询工作岗位为MANAGER或者SALESMAN的员工信息(使用union)

mysql> select ename,job from emp where job = 'MANAGER'
    -> union
    -> select ename,job from emp where job = 'SALESMAN';
+--------+----------+
| ename  | job      |
+--------+----------+
| JONES  | MANAGER  |
| BLAKE  | MANAGER  |
| CLARK  | MANAGER  |
| ALLEN  | SALESMAN |
| WARD   | SALESMAN |
| MARTIN | SALESMAN |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)

为什么使用union而不是or逻辑运算?因为union效率更高!

另外,对于表连接来说,如果有恰当的union语句可以操作与之相同的效果,优先使用union操作

union使用注意:

查询的两个结果集列数必须相同

在Mysql中列的数据类型可以存在差异,但是在Oracle中则不可以

4.limit查询

limit用于限制结果集的长度

后面可以存在一个参数或者两个参数(起始下标,取数据条数)

案例:按照薪资降序取出排名前5的员工信息

mysql> select ename,sal
    -> from emp
    -> order by sal desc
    -> limit 0,5;
+-------+---------+
| ename | sal     |
+-------+---------+
| KING  | 5000.00 |
| FORD  | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)

limit在order by之后执行

5.分页

假设每页要访问y条数据,那么第x页的数据就是

limit((x-1)*y,y)

以上就是MySQL数据库之union,limit和子查询详解的详细内容,更多关于MySQL union limit 子查询的资料请关注我们其它相关文章!

(0)

相关推荐

  • mysql详细分析讲解子查询的使用

    出现在其他语句中的 select 语句,称为子查询或内查询:外部的查询语句,称为主查询或 外查询 . -- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三') 当然子查询也有类型,分为以下几种 : 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列)(较少) 表子查询(结果集一般为多行多列) 这里我们以新建

  • MySQL数据库之联合查询 union

    目录 1.应用场景 2.基本语法 3.order by的使用 前言: 将多个查询结果的结果集合并到一起(纵向合并),字段数不变,多个查询结果的记录数合并 1.应用场景 同一张表中不同结果合并到一起展示:男生升高升序,女生升高降序 数据量较大的表,进行分表操作,将每张表的数据合并起来显示 2.基本语法 select 语句 union [union 选项] select 语句; union 选项 和select 选项基本一致 distinct 去重,默认 all 保存所有结果 mysql> sele

  • 详细介绍mysql中limit与offset的用法

    目录 mysql limit与offset用法 附:Mysql limit offset用法举例 总结 有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的使用方法. mysql limit与offset用法 mysql里分页一般用limit来实现,例如: 1.select* from user limit 3 表示直接取前三条数据 2.select * from user limit 1,3; 表示取1后面的第2,3,4三条条数据 3.select * fro

  • MySQL数据库子查询 sub query

    目录 1.基本概念 1.1.子查询 1.2.主查询 1.3.子查询和主查询的关系 1.4.子查询的分类 2.标量子查询 2.1.基本语法 2.2.示例 3.列子查询 3.1.基本语法 3.2.示例 4.行子查询 4.1.基本语法 4.2.示例 5.表子查询 5.1.基本语法 5.2.示例 6.exists子查询 6.1.基本语法 6.2.示例 7.子查询中的特定关键字 7.1.in 7.2.any 7.3.some 7.4.all 7.5.值为null 1.基本概念 1.1.子查询 嵌套查询下层

  • 详细聊聊MySQL中的LIMIT语句

    目录 问题 server层和存储引擎层 那LIMIT是什么鬼? 怎么办? 吐个槽 最近有多个小伙伴在答疑群里问了小孩子关于LIMIT的一个问题,下边我来大致描述一下这个问题. 问题 为了故事的顺利发展,我们得先有个表: CREATE TABLE t ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), common_field VARCHAR(100), PRIMARY KEY (id), KEY idx_key1 (key1

  • MySQL系列理解运用union(all)与limit及exists关键字教程

    目录 1.union:可以将查询结果相加 1)union all:不能去重 2)union:可以达到去重的效果. 2.limit:分页查询全靠它 1)对limit用法的一些说明 2)案例说明 3)通用的标准分页SQL 3.exists用法:又称"相关子查询" 1)带你理解exists的执行原理 2)案例演示 3)一张图说明exists子查询的原理 1.union:可以将查询结果相加 union用于将查询结果相加,尤其是将两张毫无关系的表中的数据,拼接在一起显示的时候. 但是有一个前提条

  • 简单了解MySQL union all与union的区别

    union 是对数据进行并集操作,不包括重复行,同时进行默认排序Union all 是对数据进行并集操作,包括重复行,不进行排序举例说明: 创建数据库表: CREATE TABLE `t_demo` ( `id` int(32) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(2) DEFAULT NULL, `num` int(3) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DE

  • MySQL数据库之union,limit和子查询详解

    目录 1.where中的子查询 2.from子句后的子查询 3.union 4.limit查询 5.分页 1.where中的子查询 示例数据参见此文章 案例:查询比最低工资高的员工姓名和薪资 子查询,先查询子查询括号里的,再向上级进行查询 mysql> select ename,sal from emp where sal -> > -> (select min(sal) from emp); +--------+---------+ | ename | sal | +------

  • MySQL数据库学习之去重与连接查询详解

    目录 1.去重 2.连接查询 使用where进行多表连接查询 内连接 - 等值连接 内连接 - 非等值连接 内连接 - 自连接 外连接 - 左右外连接 三表连接 1.去重 示例表内容参考此文章 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 例如:去重显示岗位信息: mysql> select distinct job from emp; +-----------+ | job | +-----------+ | CLERK

  • MySQL中几种常见的嵌套查询详解

    目录 几种常见的嵌套查询——以学员成绩为例 含ANY或ALL关键词的嵌套查询 含IN关键词的嵌套查询 含EXISTS关键词的嵌套查询 [补充]关于IN和EXISTS两个关键词还有两个延伸关键词NOT IN和NOT EXISTS 附:其他使用方法和注意 总结 几种常见的嵌套查询——以学员成绩为例 嵌套查询,也称为子查询,是实际工作中经常用到的一种查询方式.子查询其实就是在已有的查询语句中的where后面再嵌套一层查询语句,也就是把内层查询结果当做外层查询参照的数据表来使用. 在工作中,经常会遇见4

  • MySQL数据库入门之多实例配置方法详解

    本文实例讲述了MySQL数据库入门之多实例配置方法.分享给大家供大家参考,具体如下: 前面介绍了相关的基础命令操作:MySQL数据库基础篇之入门基础命令 所有的操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的,因为必须要掌握. 1.什么是多实例 多实例就是一台服务器上开启多个不同的服务端口(默认3306),运行多个mysql的服务进程,这此服务进程通过不同的socket监听不同的服务端口来提供各在的服务,所有实例之间共同使用一套MYSQL的安装程序,但各自使用不同的配置文件.启

  • MySQL数据库配置信息查看与修改方法详解

    目录 摘要 查看 查看数据基本信息 查询sql_mode 查看在配置文件中定义的变量 查看MySQL的服务当前运行时的变量 查看MySQL默认认证方式 修改MySQL的系统变量 根据变量修改的方式 根据变量的生效范围 总结 摘要 当在不同团队间使用MySQL数据库时,最好是保证数据库的配置信息是一致的,否则会因为不同开发同事的SQL规范不一样,导致出现一些不必要的SQL问题: 本篇博客,主要记录如何查看数据的配置信息,及相关解释. 查看 查看数据基本信息 查看版本 查看版本 select ver

  • MySQL数据库InnoDB数据恢复工具的使用小结详解

    本文从实际使用经验出发,介绍一款开源的MySQL数据库InnoDB数据恢复工具:innodb-tools,它通过从原始数据文件中提取表的行记录,实现从丢失的或者被毁坏的MySQL表中恢复数据.例如,当你不小心执行DROP TABLE.TRUNCATE TABLE或者DROP DATABASE之后,可以通过以下方式恢复数据.以下内容大部分参考自:Percona Data Recovery Tool for InnoDB,文档是英文的,而且写的比较晦涩,这里是个人的实战经验总结,供大家参考学习.在介

  • linux安装mysql数据库以及配置Java项目的图文详解

    一.安装mysql数据库 ①下载并解压上传到/opt/soft目录(soft目录是自己创建的) ②解压:tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar ③清空linux自带的数据库 1.查看是否有旧版本的数据库: rpm -qa |grep mysql rpm -qa | grep mariadb 2. 卸载已有的数据库:(卸载会把这个包的依赖包也一起卸载) yum -y remove mariadb-libs.x86_64 ④安装mysql社

  • MySQL 四种连接和多表查询详解

    目录 MySQL 内连接.左连接.右连接.外连接.多表查询 构建环境: 一.INNER JION 内连接 ( A ∩ B ) 二.LEFT JOIN 左外连接( A 全有 ) 三.RIGHT JOIN 右外连接 (B 全有) 四.FULL JOIN 全外连接( A + B) 五.LEFT Excluding JOIN ( A - B 即 A 表独有)+ 六.RIGHT Excluding JOIN ( B - A 即 B表独有) 七.OUTER Excluding JOIN (A 与 B 各自独

  • MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实际的业务逻辑. 主键使用方式: 方式一:     Create table t1(        Id int primary key,        Name varchar(100) ); Insert into t1 values(1,'zs'); Insert into t1 values(

  • MySQL数据库设计概念及多表查询和事物操作

    目录 数据库设计概念 数据库设计简介 表关系(多对多) 表关系(一对多) 表关系之一对一 多表查询 笛卡尔积现象 内连接查询 嵌套查询(子查询) 事务操作 事务的概念 手动提交事务 自动提交事务 事务原理和四大特征 事务原理 事务的四大特征 事务的并发访问引发的三个问题(面试) 事务的隔离级别 数据库设计概念 数据库设计简介 1.数据库设计概念 数据库设计就是根据业务系统具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型. 建立数据库中的表结构以及表与表之间的关联关系的过

随机推荐