msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
来源:互联网 发布:c 相关系数算法 编辑:程序博客网 时间:2024/05/22 14:35
转:http://www.cnblogs.com/blueoverflow/archive/2015/08/08/4712320.htm
阅读目录(Content)
- 1.ANY关键字
- 2.ALL关键字
- 3.SOME关键字
- 4.IN关键字
- 5.EXISTS关键字
- 6.UNION关键字
- UNION 与 UNION ALL 的区别
假设an
IN运算符用于WHERE表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。代码如下:
select ...from ... where a > any(...);
->
select ...from ... where a > result1 or a > result2 or a > result3;
2.ALL关键字
ALL关键字与any关键字类似,只不过上面的or改成and。即:
select ...from ... where a > all(...);
->
select ...from ... where a > result1 and a > result2 and a > result3;
3.SOME关键字
some关键字和any关键字是一样的功能。所以:
select ...from ... where a > some(...);
->
select ...from ... where a > result1 or a > result2 or a > result3;
4.IN关键字
IN运算符用于WHERE表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。代码如下:
查询SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B) //查询B表中AID的记录SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B) //意思和上面相反删除delete from articles where id in (1,2,3); //删除id=1,id=2,id=3的记录delete from articles where id not in (1); //删除id!=1的记录词语IN是"=ANY"的别名。因此,这两个语句是一样的:
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
5.EXISTS关键字
SELECT ... FROM table WHERE EXISTS (subquery)
该语法可以理解为:将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否得以保留。
mysql> SELECT * FROM employee -> WHERE EXISTS -> (SELECT d_name FROM department WHERE d_id=1004);Empty set (0.00 sec)
此处内层循环并没有查询到满足条件的结果,因此返回false,外层查询不执行。
NOT EXISTS刚好与之相反
当然,EXISTS关键字可以与其他的查询条件一起使用,条件表达式与EXISTS关键字之间用AND或者OR来连接,如下:
mysql> SELECT * FROM employee -> WHERE age>24 AND EXISTS -> (SELECT d_name FROM department WHERE d_id=1003);提示:
•EXISTS (subquery) 只返回 TRUE 或 FALSE,因此子查询中的 SELECT * 也可以是 SELECT 1 或其他,官方说法是实际执行时会忽略 SELECT 清单,因此没有区别。
•EXISTS 子查询的实际执行过程可能经过了优化而不是我们理解上的逐条对比,如果担忧效率问题,可进行实际检验以确定是否有效率问题。
•EXISTS 子查询往往也可以用条件表达式、其他子查询或者 JOIN 来替代,何种最优需要具体问题具体分析
6.UNION关键字
MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中。语法为:
SELECT column,... FROM table1
UNION [ALL]
SELECT column,... FROM table2
...
在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。
mysql> SELECT d_id FROM employee -> UNION -> SELECT d_id FROM department;+------+| d_id |+------+| 1001 || 1002 || 1004 || 1003 |+------+
合并比较好理解,也就是将多个查询的结果合并在一起,然后去除其中的重复记录,如果想保存重复记录可以使用UNION ALL语句
- msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
- msyql中子查询IN,EXISTS,ANY,ALL,UNION介绍
- MySQL中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
- SOME,ANY,All,EXISTS,IN
- Oracle SOME,ANY,All,EXISTS,IN
- In ,Exists,Some,Any
- sql中用于子查询的几个关键词 any(some是 any的别名),all,in,exists
- SQL中exists,any,all,some,in的问题
- SQL中exists,any,all,some,in的问题
- SQL中exists,any,all,some,in的问题
- 多表查询之子查询,in,any,all,exists,
- Oracle笔记之any,some,all以及exists与in的用法
- 子查询+in+exists/not exists+all+any+多列子查询
- Esper系列(六)子查询、Exists、In/not in、Any/Some、Join
- LIMIT & IN/ALL/ANY/SOME subquery
- sql之exsists, in, all, any, some,
- ANY, SOME and ALL in Oracle
- sql中exsists, in, all, any, some,
- 自建短连接
- 记录一下以后好查 spring 设置注入 构造器注入
- 如何转载别人的文章
- SimpleDateFormat和DateFormat的基本使用(format和prase)
- Windows下加速SourceTree的方法
- msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
- Zookeeper原理
- C++简单实现膨胀腐蚀开闭运算
- C++ 测试覆盖率统计轻量方案-gtest+lcov
- ios 图片裁剪
- 第1周第1次课 数据结构总览
- bzoj 1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛(BFS)
- Spring IOC和DI
- svn: line 19: Option expected