关于MySQL嵌套查询的技巧[zz]

许多人都觉得MySQL不支持嵌套查询,其实MySQl从4.11版后已经完全支持嵌套查询了,那么下面我举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):

1. SELECT语句的子查询:

语法:

CODE:

SELECT ... FROM (subquery) AS name ...

先创建一个表:

CODE:

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);

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

CODE:

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排序的集合进行求均值是不能得到正确答案的:

CODE:

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

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

CODE:

SELECT AVG(sum_column1)

FROM (SELECT SUM(column1) AS sum_column1

FROM t1 GROUP BY column1) AS t1;

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

看下面的例子:

CODE:

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用途及用法和在其他没有什么大的区别,我就简单举几个范例好了:

范例一:

CODE:

SELECT DISTINCT store_type FROM Stores

WHERE EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

范例二:

CODE:

SELECT DISTINCT store_type FROM Stores

WHERE NOT EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

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

CODE:

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.条件关联关系查询:

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

CODE:

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.其他使用方法和注意:

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

CODE:

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 子查询概念_聊聊MySQL的子查询

    1. 背景 在之前介绍MySQL执行计划的博文中已经谈及了一些关于子查询相关的执行计划与优化.本文将重点介绍MySQL中与子查询相关的内容,设计子查询优化策略,包含半连接子查询的优化与非半连接子查询的 ...

  2. mysql where 条件取反_数据库MySQL之where条件查询

    数据库MySQL之where条件查询 1. where条件查询的介绍 使用where条件查询可以对表中的数据进行筛选,条件成立的记录会出现在结果集中. where语句支持的运算符: 比较运算符 逻辑运 ...

  3. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解

    原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...

  4. innodb和my查询速度_吃透MySQL:MyISAM和InnoDB存储引擎详细介绍

    一,MySQL基本架构 MySQL基础架构可以分为两大类:Server层和存储引擎层. Server层: Server层涵盖了MySQL大部分核心业务功能,并且所有存储引擎的功能都在这一层实现. 存储 ...

  5. mysql高级查询面试_高级MySQL数据库面试问题 附答案

    因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题. 1. 如何使用SELECT语句找到你正在运行的服务器的版本并 ...

  6. mysql inner join 长数字_关于mysql inner join 链接查询的优化

    在使用查询语句时,inner join,left join,right join等这些联接语句,想必你们并不陌生,并且常常会用到,联接达到了咱们想要的结果,但是当数据越大越大的时候,会发现查询很慢,每 ...

  7. c语言 mysql 查询数字_使用mysql C语言API编写程序—MYSQL数据库查询操作

    //MYSQL_RES保存查询结构 MYSQL_RES* result_ = NULL; int error_code = 0;//保存错误码 char error_info[1024] = '\0' ...

  8. mysql覆盖索引解决模糊查询失效_关于MySQL的SQL优化之覆盖索引

    前些天,有个同事跟我说:"我写了个SQL,SQL很简单,但是查询速度很慢,并且针对查询条件创建了索引,然而索引却不起作用,你帮我看看有没有办法优化?". 我对他提供的case进行了 ...

  9. mysql基础小测试三_数据库---MySQL(三)

    一.视图 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图[i ...

  10. mysql 显示右边所有名称_查询表 - [ MySql参考手册 ] - 在线原生手册 - php中文网

    一.单表查询 1.1.查询所有字段 1.2.查询指定字段 1.3.查询指定记录 1.4.带IN关键字的查询 1.5.带BETWEEN AND 的范围查询 1.6.带LIKE的字符匹配查询 1.7.查询 ...

最新文章

  1. 要想进入顶级数据公司,2020年数据科学10大技能帮你加分
  2. 操作系统:第二章 进程管理3 - 进程同步与互斥
  3. java反射sethaha_Java反射深度测试
  4. 金融评分卡项目—4.GBDT模型在流失预警模型中的应用
  5. 关于ThinkPHP框架项目在二级目录时,__PUBLIC__路径的问题
  6. 创业失败反思:吾亦有大错,错在哪里?
  7. 杭州电子科技大学acm--2005
  8. JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!
  9. 苏宁RPC远程服务调用框架RSF
  10. 2021年4月7日 关于三层交换机的配置及命令!!!
  11. Xmind教程-添加外框
  12. 区块链核心技术演进之路-算法演进
  13. ZIP文件夹解压小程序
  14. 判断输入的年份是不是闰年
  15. 数据处理技巧(3):excel打开txt数据,出现多个数据在同一个单元格的解决办法
  16. NIT 股市风云 按位与运算 F. 休赛季的引援#2
  17. c语言中的英语缩写,英文短信缩写:超实用总结(C开头)
  18. android view设置按钮颜色_建议收藏!最全 Android 常用开源库总结!
  19. 普林斯顿微积分读本篇十九:微分方程
  20. Linux中安装FastDFS轻量级分布式文件系统

热门文章

  1. blender icons 图标
  2. fluidsim元件库下载_基于仿真软件的系统EMC设计解析
  3. STM8L051F3_03_CLK应用
  4. 如何使用ADI公司的AD9833自制任意波形/函数发生器
  5. python实现千图成像
  6. android名字的由来构词,词根词缀词典_根据词缀查单词的词典_词根词缀 书_词根词缀记忆字典4.4.0 for android...
  7. android显示超图地图,超图---简单地图显示
  8. websockets_WebSockets简介
  9. 二维条码和射频识别技术在仓储物流系统中的应用
  10. vector2Drawable(批量将png图片转换成android使用的矢量图 )