返回顶部
首页 > 资讯 > 精选 >Mariadb SELECT子查询及UNION怎么用
  • 734
分享到

Mariadb SELECT子查询及UNION怎么用

2023-06-27 10:06:56 734人浏览 安东尼
摘要

这篇文章主要介绍“Mariadb SELECT子查询及UNION怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mariadb SELECT子查询及UNioN怎么用”文章

这篇文章主要介绍“Mariadb SELECT子查询及UNION怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mariadb SELECT子查询及UNioN怎么用”文章能帮助大家解决问题。

SELECT子查询

嵌套在其他SELECT语句中的SELECT查询叫做子查询,为什么要这样做呢?其实我们已经学了多表查询,很多时候多表查询已经够用了?但是子查询又有自身存在的地位和价值,还拿多表查询那个例子来说。

Mariadb SELECT子查询及UNION怎么用

我们想知道某一城市所使用的语言,就可以分为两个步骤:

1.在City表中查询该城市的CountryCode。

2.使用查询到的这个CountryCode在CountryLanguage表中查询该国家所使用的语言。

虽然,可以分两步完成,但是,需要两次查询和两次传输,在带宽和性能的对比下,我们更希望让Mysql(MariaDB)来帮助我们完成这件事不是吗?

看下用子查询是什么样的~

MariaDB [world]> SELECT Language FROM countrylanguage WHERE CountryCode = (SELECT CountryCode FROM city WHERE Name = 'Peking');+-----------+| Language  |+-----------+| Chinese   || Dong      || Hui       || Mantšu    || Miao      || MonGolian || Puyi      || Tibetan   || Tujia     || Uighur    || Yi        || Zhuang    |+-----------+12 rows in set (0.07 sec)

看到(SELECT CountryCode FROM city WHERE Name = ‘Peking’)这一坨了吗?用括号括起来的这个查询,他会得到北京的CountryCode,而这个CountryCode又作为外面SELECT的WHERE检索条件。

所以,子查询就是用括号括起来的查询,而MariaDB会在进行查询时先进行括号内的查询得到一个值或一组值替换到相应的位置

ANY或SOME子查询

其实ANY和SOME跟IN的意思是一样的,只要满足操作符对()内的任一值的操作为TRUE即可,如下所示。

查询所有技术部(Tech)和销售部(Sales)的员工:

MariaDB [world]> SELECT * FROM user                                                       -> WHERE deptid IN   -> (SELECT id FROM department WHERE name IN ('Sales','Tech'));MariaDB [world]> SELECT * FROM user   -> WHERE deptid = ANY   -> (SELECT id FROM department WHERE name IN ('Sales','Tech'));MariaDB [world]> SELECT * FROM user   -> WHERE deptid = SOME   -> (SELECT id FROM department WHERE name IN ('Sales','Tech'));+----+-------+----------+---------------------+--------+| id | name  | passWord | regtime             | deptid |+----+-------+----------+---------------------+--------+|  1 | test  | test     | 2018-03-05 17:25:26 |      1 ||  2 | test1 | test1    | 2018-03-05 17:25:26 |      1 ||  3 | lucy  | lucy     | 2018-03-05 17:25:26 |      2 |+----+-------+----------+---------------------+--------+3 rows in set (0.00 sec)

EXISTS存在判断

只要子查询返回的有值即为TRUE,否则即为FALSE,如下例展示:

MariaDB [world]> SELECT EXISTS( SELECT * FROM user WHERE deptid = (SELECT id FROM department WHERE name='Tech') ) AS dep_is_Exist;+--------------+| dep_is_Exist |+--------------+|            1 |+--------------+1 row in set (0.01 sec)

当然EXISTS前可以加一个NOT,这样就变成了当子查询没有结果时为真了。

注意事项

  1. 作为子查询的SELECT语句只能查询单个列,企图检索多个列将返回错误。
  2. 通常子查询和表连接可以做相互转换,而表连接相对而言会比子查询获得更好的效率。

UNION组合表

sql允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回,这些组合查询通常称为并(union)或复合查询(compound query)。

需要注意如下几点:

  1. UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合四条SELECT语句,将要使用三个UNION关键字)。
  2. UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
  3. 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型(例如,不同的数值类型或不同的日期类型)。

语法如下:

SELECT column_name FROM table1UNIONSELECT column_name FROM table2

看如下例子,检索所有美国和中国的国家:

MariaDB [world]> SELECT * FROM city WHERE CountryCode = 'CHN'   -> UNION   -> SELECT * FROM city WHERE CountryCode ='USA';+------+-------------------------+-------------+----------------------+------------+| ID   | Name                    | CountryCode | District             | Population |+------+-------------------------+-------------+----------------------+------------+| 1890 | Shanghai                | CHN         | Shanghai             |    9696300 || 1891 | Peking                  | CHN         | Peking               |    7472000 |....................................................................................| 4064 | Odessa                  | USA         | Texas                |      89293 || 4065 | Carson                  | USA         | California           |      89089 || 4066 | Charleston              | USA         | South Carolina       |      89063 |+------+-------------------------+-------------+----------------------+------------+637 rows in set (0.01 sec)//以下这条语句等同上方的SELECT查询SELECT * FROM city WHERE CountryCode ='USA' OR CountryCode = 'CHN';

统计美国和中国的城市数:

MariaDB [world]> SELECT CountryCode,COUNT(id) AS city_nums FROM city WHERE CountryCode = 'CHN'   -> UNION   -> SELECT COUNT(id),CountryCode FROM city WHERE CountryCode = 'USA';+-------------+-----------+| CountryCode | city_nums |+-------------+-----------+| CHN         | 363       || 274         | USA       |+-------------+-----------+2 rows in set (0.00 sec)

所以只要列数相同,都是可以组合成同一个结果集的,以下例子第一行显示了美国的城市数,第二行显示了美国的语言数量:

MariaDB [world]> SELECT COUNT(id),CountryCode FROM city WHERE CountryCode = 'USA' UNION SELECT COUNT(Language),CountryCode FROM countrylanguage WHERE CountryCode ='USA';+-----------+-------------+| COUNT(id) | CountryCode |+-----------+-------------+|       274 | USA         ||        12 | USA         |+-----------+-------------+2 rows in set (0.00 sec)

关于“Mariadb SELECT子查询及UNION怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Mariadb SELECT子查询及UNION怎么用

本文链接: https://lsjlt.com/news/309676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mariadb SELECT子查询及UNION怎么用
    这篇文章主要介绍“Mariadb SELECT子查询及UNION怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mariadb SELECT子查询及UNION怎么用”文章...
    99+
    2023-06-27
  • UNION和UNION ALL怎么在MySQL中使用
    本篇文章为大家展示了UNION和UNION ALL怎么在MySQL中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL中的UNION...
    99+
    2024-04-02
  • SQL UNION和UNION ALL操作符怎么使用
    SQL UNION和UNION ALL操作符用于合并两个或多个SELECT语句的结果集。UNION操...
    99+
    2023-10-12
    SQL
  • SQLServer如何使用UNION代替OR提升查询性能
    这篇文章主要介绍SQLServer如何使用UNION代替OR提升查询性能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  SQLServer数据库查询的过程中,通过对SQL语...
    99+
    2024-04-02
  • SQL中UNION关键字怎么用
    小编给大家分享一下SQL中UNION关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL中的UNION...
    99+
    2024-04-02
  • Case:MySQL使用in带子查询的时候,子查询最好不要使用union或union all
    MySQL使用in带子查询的时候,子查询不要使用union或union all特别是当外部表比较大的时候,千万不要使用in和union搭配,因为子查询中一旦使用unio ...
    99+
    2024-04-02
  • MySQL利用UNION连接2个查询排序失效详解
    概述 UNION 连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录 UNION ALL 连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录 今天在接...
    99+
    2024-04-02
  • Mariadb聚合函数及分组查询怎么使用
    这篇文章主要介绍“Mariadb聚合函数及分组查询怎么使用”,在日常操作中,相信很多人在Mariadb聚合函数及分组查询怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mariadb聚合函数及分组查询怎...
    99+
    2023-06-27
  • oracle子查询怎么用
    子查询是嵌套在主查询中的独立查询,用于提供数据。oracle支持相关和非相关子查询,语法为:(子查询)。使用步骤包括:确定数据需求、编写子查询、嵌入主查询。优点包括:提高性能、简化查询、...
    99+
    2024-05-21
    oracle
  • MYSQL子查询以及合并查询的用法
    子查询带IN关键字的子查询只有子查询返回的结果列包含一个值时,比较运算符才适用。假如一个子查询返回的结果集是值的列表,这时比较运算符就必须用IN运算符代替。IN运算符可以检测结果集中是否存在某个特定的值,如...
    99+
    2024-04-02
  • mysql select后面的子查询应该如何使用
    本文主要给大家简单讲讲mysql select后面的子查询应该如何使用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql select后面的...
    99+
    2024-04-02
  • SQL子查询怎么使用
    这篇“SQL子查询怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL子查询怎么使用”文章吧。SQL子查询或称为内部...
    99+
    2023-06-27
  • mysql子查询怎么使用
    这篇文章主要讲解了“mysql子查询怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql子查询怎么使用”吧!出现在其他语句中的 select 语句,称为子查询或内查询;...
    99+
    2023-06-30
  • PostgreSQL数据库视图及子查询怎么使用
    本篇内容介绍了“PostgreSQL数据库视图及子查询怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!视图表里面保存的是实际数据,视图...
    99+
    2023-06-29
  • union和子查询中orderby一起使用导致排序失效问题及解决
    目录一、前言二、问题列举2.1 子查询中不能使用order by2.2 子查询order by无效2.3 排序条件不够严格导致分页数据重复总结一、前言 分页查询的需求如同家常便饭,多...
    99+
    2022-12-27
    union order by 子查询order by 排序失效问题
  • 什么是mysql子查询及如何运用
    下面讲讲关于什么是mysql子查询及如何运用,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完什么是mysql子查询及如何运用这篇文章你一定会有所受益。 例: 修改后: ...
    99+
    2024-04-02
  • MariaDB中怎么执行查询操作
    要在MariaDB中执行查询操作,可以使用SELECT语句。例如,要查询名为“users”的表中的所有数据,可以执行以下命令...
    99+
    2024-04-09
    MariaDB
  • MariaDB中怎么执行查询语句
    在MariaDB中执行查询语句可以使用以下步骤: 打开MariaDB命令行终端或者使用图形化界面工具连接到MariaDB数据库。...
    99+
    2024-04-09
    MariaDB
  • MySQL Select 查询语句详解及高级用法
    MySQL是一个开源的关系型数据库管理系统,支持多种操作语言,其中最基础、最常用的命令之一就是SELECT语句。在本篇文章中,这里将详细介绍MySQL SELECT语句的各个方面,从最基本的查询语句,到更高级的技巧和功能。 一、基本...
    99+
    2023-10-01
    mysql 数据库 sql
  • mysql查询语句select命令怎么使用
    在MySQL中,使用SELECT命令可以从数据库中检索数据。其基本语法如下: SELECT column1, column2...
    99+
    2024-04-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作