当前位置: 首页 > news >正文

MySQL 子查询(subquery)语法与用法实例

MySQL 子查询

子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用。MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性。

子查询没有固定的语法,一个子查询的例子如下:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)

对应的两个数据表如下:

article 文章表:
aidtitlecontentuid
1文章1文章1正文内容...1
2文章2文章2正文内容...1
3文章3文章3正文内容...2
4文章4文章4正文内容...3
user 用户表:
uidusernamepasswordstatus
1adminb7e591c246d010bb2ccd77d52490c85e1
2小明a193686a53e4de85ee3f2ff0576adf011
3Jack0193686a35e4de85ee3f2ff0567adf4900

查询返回结果如下所示:

aidtitlecontentuid
1文章1文章1正文内容...1
2文章2文章2正文内容...1
3文章3文章3正文内容...2

在该例子中,首先通过子查询语句查询出所有 status=1 的 uid,实际的查询类似于:

SELECT * FROM article WHERE uid IN(1,2)

MySQL 子查询分类

上面演示了一个简单的子查询例子,根据子查询的返回数据形式(如上例中返回的 uid 序列),可以分为如下几类:

  • 标量子查询:返回单一值的标量,最简单的形式。
  • 列子查询:返回的结果集是 N 行一列。
  • 行子查询:返回的结果集是一行 N 列。
  • 表子查询:返回的结果集是 N 行 N 列。

MySQL 子查询操作符

在主查询中,可以使用比较操作符以使用操作符来对子查询返回的结果进行比较,从而确定查询的条件。如上面例子使用了 IN 操作符。

可以使用的操作符有:= > < >= <= <> ANY IN SOME ALL EXISTS ,我们将在本节余下的教程中学习这些操作符在子查询中的使用方法。

转载于:https://www.cnblogs.com/txd66/p/3269389.html

相关文章:

  • Android 蓝牙开发(整理大全)
  • Openerp js代码分析 继承部分
  • php全面获取url地址栏及各种参数
  • poj2679
  • 数据映射–有序数组
  • JavaScript prototype
  • json相关
  • 《SQL With ties 的理解 与 》
  • undefined reference to 问题解决方法。
  • 防火墙iptables之基础语法
  • xen虚拟化实战系列(十一)之xen虚拟机磁盘文件挂载
  • 文本处理工具------awk
  • Action属性注入值和指定Struts 2处理的请求
  • Java多线程感悟二
  • linux下乱码问题的终极解决方法
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Consul Config 使用Git做版本控制的实现
  • golang中接口赋值与方法集
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • ng6--错误信息小结(持续更新)
  • PhantomJS 安装
  • vuex 学习笔记 01
  • 码农张的Bug人生 - 初来乍到
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务框架lagom
  • 为视图添加丝滑的水波纹
  • k8s使用glusterfs实现动态持久化存储
  • PostgreSQL之连接数修改
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​你们这样子,耽误我的工作进度怎么办?
  • (zt)最盛行的警世狂言(爆笑)
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (转)四层和七层负载均衡的区别
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net framework profiles /.net framework 配置
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net开发引用程序集提示没有强名称的解决办法
  • @Repository 注解
  • []error LNK2001: unresolved external symbol _m
  • [Android]使用Retrofit进行网络请求
  • [C++]C++基础知识概述
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [java]删除数组中的某一个元素
  • [Java基础] Java中List.remove报错UnsupportedOperationException
  • [macOS] Mojave10.14 夜神安卓模拟器启动问题
  • [mmucache]-ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲