最近在MySQL上做了点工作,发现很多人都在询问MySQL嵌套查询的问题,许多人都觉得MySQL不支持嵌套查询,其实MySQl从4.11版后已经完全支持嵌套查询了,那么下面我举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):

1. SELECT语句的子查询:

语法:     SELECT ... FROM (subquery) AS name ...

先创建一个表:

CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);

INSERT INTO t1 VALUES (1,'1',1.0);

INSERT INTO t1 VALUES (2,'2',2.0);

我们就可以进行以下的嵌套查询了:

SELECT sb1,sb2,sb3

FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb

WHERE sb1 > 1;

结果是:

2, '2', 4.0.

我们知道下面语句是不会得到正确结果的,因为对经过Group by排序的集合进行求均值是不能得到正确答案的:

SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1

所以我们可以通过下面的嵌套查询实现同样的效果:

SELECT AVG(sum_column1)

FROM (SELECT SUM(column1) AS sum_column1

FROM t1 GROUP BY column1) AS t1;

2.行的子查询(Row Subquery):

看下面的例子:

SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);

这个查询是返回column1等于column2的结果行。Row函数中的1和2相当于构造参数。想必Blogjava上的同志对这些应该比较清楚,也不去详细介绍了。

3.使用Exist和Not Exist参数

这里的Exist和Not Exist用途及用法和在其他没有什么大的区别,我就简单举几个范例好了:

范例一:      SELECT DISTINCT store_type FROM Stores

WHERE EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

范例二:   SELECT DISTINCT store_type FROM Stores

WHERE NOT EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

范例三:  这个例子中嵌套使用了Not Exist语法,稍微注意一下:

SELECT DISTINCT store_type FROM Stores S1

WHERE NOT EXISTS (

SELECT * FROM Cities WHERE NOT EXISTS (

SELECT * FROM Cities_Stores

WHERE Cities_Stores.city = Cities.city

AND Cities_Stores.store_type = Stores.store_type));

4.条件关联关系查询:

解释起来麻烦,直接看例子吧:

SELECT column1 FROM t1 AS x

WHERE x.column1 = (SELECT column1 FROM t2 AS x

WHERE x.column1 = (SELECT column1 FROM t3

WHERE x.column2 = t3.column1));

跟其他数据库做法是一样的。

5.其他使用方法和注意:

除了上面这些还有很多很多,不过就不去细讲了,因为这些跟别的数据库差不多,只是为了给大家一个参考,提提就够了。

SELECT (SELECT s1 FROM t2) FROM t1;

SELECT (SELECT s2 FROM t1);

支持子查询的语法有:SELECT,INSERT,UPDATE,DELETE,SET和DO。

子查询可以使用任何普通查询中使用的关键词:如DINSTINCT,GROUP BY,LIMIT,ORDER BY,UNION,ALL,UNION ALL等。可以使用, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。

mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询相关推荐

  1. mysql 表的第2条到4条记录_mysql怎么查询第2到4条数据?

    在mysql中可以通过"LIMIT"关键字来查询第2到4条数据,具体语句为"SELECT * FROM 数据表名 LIMIT 1,3;",查询从第2条记录开始的 ...

  2. mysql执行效率低_如何查询mysql中执行效率低的sql语句

    展开全部 一.MySQL数据库有几个配置选项可以32313133353236313431303231363533e59b9ee7ad9431333337373563帮助我们及时捕获低效SQL语句 1, ...

  3. mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询

    根据表,列,索引的详细信息以及WHERE子句中的条件,MySQL优化器考虑了许多技术来有效执行SQL查询中涉及的查找.无需读取所有行即可执行对巨大表的查询:可以执行涉及多个表的联接,而无需比较行的每个 ...

  4. Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略

    Database之SQLSever:SQL命令实现查询之多表查询.嵌套查询.分页复杂查询,删除表内重复记录数据.连接(join.left join和right join简介及其区别)等案例之详细攻略 ...

  5. java mysql 时间查询_MYSQL实现查询某个时间段内每一天的数据

    作者:2015-02-10 比如查询一周内的访问量,页面显示.如图: 好像Mysql没有提供什么函数可以实现这种功能.目前的做法也只能是根据选择的时间段来生成查询参数.一次查询一天的数据. 我的查询方 ...

  6. mysql嵌套查询详解_MySQL嵌套查询实例详解

    本文实例分析了MySQL嵌套查询.分享给大家供大家参考,具体如下: MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual): ...

  7. mysql嵌套查询详解_MySQL嵌套查询实例详解_MySQL

    本文实例分析了MySQL嵌套查询.分享给大家供大家参考,具体如下: MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual): ...

  8. 利用窗口函数查询出各小组内排名第一的记录(MySQL)

    创建测试表: # 创建销售表sales: create table sales( year int, country varchar(20), product varchar(32), profit ...

  9. MySQL之根据经纬度查询多少公里范围内的数据

    MySQL之根据经纬度查询多少公里范围内的数据 根据经纬度查询多少公里范围内的数据 创建地址表,存储经纬度信息 插入数据 根据当前经纬度查询所有地址,按距离由近到远排序 查询结果(距离以km为单位) ...

  10. mysql左联和右联_MySQL联合查询语法内联、左联、右联、全联

    MySQL联合查询效率较高,以下例子来说明联合查询(内联.左联.右联.全联)的好处: T1表结构(用户名,密码) userid(int)   usernamevarchar(20)   passwor ...

最新文章

  1. ftp windows无法访问此文件夹请确保输入的文件名_企业实战|企业FTP搭建
  2. 大雁蛋人工孵化的方法_大鹅繁殖有哪些方法,您了解吗?
  3. CSS3盒模型box-sizing属性详解,布局更方便
  4. Apache+tomcat+mysql安装步骤
  5. dvd vlc 复制_如何使用VLC翻录DVD
  6. 颉伟/郭勇/李伟合作阐释哺乳动物早期胚胎发育中表观重编程和基因印记的进化保守性和物种特异性...
  7. MySQLdb._exceptions.ProgrammingError: (1064, <NULL>)
  8. 第1章 ASP.NET 3.5与开发工具
  9. 特斯拉入驻天猫卖车了 将连做8天直播
  10. axure 怎么看距离_AXURE 怎么获取当天日期,并计算该日期距离年底还有多少天?...
  11. oracle+技术面试,Oracle技术面试问题
  12. 【Android游戏开发二十】物理游戏之重力系统开发,让你的游戏变得有质有量!...
  13. 可以用字符流复制一张图片文件吗?
  14. 【工具】获取窗口与控件信息
  15. c语言程序设计 考试报名管理系统,C语言程序设计考试题库
  16. 棱镜为什么能把阳光分成七色呢?
  17. DLL无法注入的原因查找
  18. 基于对抗生成网络的图像转换技术【论文笔记】
  19. CSDN页面打印不正常的解决方法
  20. Java 操作数据库插入失败原因

热门文章

  1. Trying to create too many scroll contexts. Must be less than or equal to: [500]
  2. 格雷码转二进制c语言程序,systemC构建格雷码和二进制的转换
  3. 深入探讨apply()方法的作用
  4. 使用WebSockets搭建多人在线聊天室
  5. Failed to parse XML
  6. CCNA考试题库中英文翻译版及答案3
  7. Java学习之Xpath报错 Exception in thread “main“ java.lang.NoClassDefFoundError: org/jaxen/Namespa
  8. 怎样卸载干净Oracle
  9. Windwos Server 2012 R2 安装LLDP协议驱动程序
  10. 手机html5编辑器哪个好,3款容易上手的HTML5编辑工具推荐~