惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
A
About on SuperTechFans
D
Docker
腾讯CDC
Google DeepMind News
Google DeepMind News
Hacker News - Newest:
Hacker News - Newest: "LLM"
W
WeLiveSecurity
Forbes - Security
Forbes - Security
S
Security @ Cisco Blogs
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
P
Privacy International News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Application and Cybersecurity Blog
Application and Cybersecurity Blog
aimingoo的专栏
aimingoo的专栏
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Secure Thoughts
Stack Overflow Blog
Stack Overflow Blog
T
Tenable Blog
T
Threatpost
P
Proofpoint News Feed
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
GbyAI
GbyAI
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
Project Zero
Project Zero
Help Net Security
Help Net Security
WordPress大学
WordPress大学
F
Full Disclosure
博客园 - 三生石上(FineUI控件)
O
OpenAI News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Heimdal Security Blog
Security Latest
Security Latest
T
Tor Project blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog

博客园 - shenpeng

C#中的具名参数和可选参数 C#中使用ExcelDataReader读取Excel文件 使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”的解决方法(转) 在eclipse中使用中文JAVA api文档 .NET、ASP.NET控件及源码大汇总 60多个精品源码站 ASP.net常用代码(常用技巧备忘) C#程序转为VB.NET程序的一个小问题 CEIL和FLOOR函数查询(Oracle,MSSQL) (转) 字符串分割自定义函数(SQL) (转) ORACLE中巧用一条SQL 实现其它进制到十进制转换(转) 数据库优化设计方案(转) 浅谈反射与特性在接口系统中的应用(编码表转化) (转) 数字格式化(转) 将DataSet导出成XLS、XML、HTML、CSV、TSV等格式 纵表变横表经典中的经典 Web页面的数据导出excel时的格式问题(转) Access中使用SQL语句应掌握的几点技巧(转) 在SQL Server中修改sa的密码
Any和Some和ALL 的使用,以及交操作差操作的嵌套查询(Oracle) (转)
shenpeng · 2008-03-18 · via 博客园 - shenpeng

SELECT emp.empno,emp.ename,emp.job,emp.sal FROM scott.emp
WHERE sal>any(SELECT sal FROM scott.emp WHERE job='MANAGER');

--上面的意思只要sal>子查询里面返回最小的一个sal值。
--分解出来看看如下:
SELECT sal FROM scott.emp WHERE job='MANAGER';
SELECT emp.empno,emp.ename,emp.job,emp.sal FROM scott.emp
WHERE sal>2975 OR sal>2850 OR sal>2450;

--结果:

     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7566 JONES                MANAGER                  2975
      7698 BLAKE                MANAGER                  2850
      7788 SCOTT                ANALYST                  3000
      7839 KING                 PRESIDENT                5000
      7902 FORD                 ANALYST                  3000


       SAL
----------
      2975
      2850
      2450


     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7566 JONES                MANAGER                  2975
      7698 BLAKE                MANAGER                  2850
      7788 SCOTT                ANALYST                  3000
      7839 KING                 PRESIDENT                5000
      7902 FORD                 ANALYST                  3000

另:SELECT emp.empno,emp.ename,emp.job,emp.sal FROM scott.emp
WHERE sal>any(SELECT sal FROM scott.emp WHERE job='MANAGER');
等同于语句:
SELECT emp.empno,emp.ename,emp.job,emp.sal FROM scott.emp
WHERE sal>SOME(SELECT sal FROM scott.emp WHERE job='MANAGER');
下面来看ALL的使用:
SELECT emp.empno,emp.ename,emp.job,emp.sal FROM scott.emp
WHERE sal>ALL(SELECT sal FROM scott.emp WHERE job='MANAGER');
--结果:
     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7788 SCOTT                ANALYST                  3000
      7839 KING                 PRESIDENT                5000
      7902 FORD                 ANALYST                  3000
理解了any和some,去理解ALL,很容易了,当我们WHERE 条件中sal>ALL(...)
表示sal必须大于子查询中返回最大的sal值。

只要我们注意一下,就不难发现ALL于ANY(SOME),在上面的例子中反义。


交操作的嵌套查询

交操作就是集合中交集的概念。
(SELECT deptno FROM scott.emp)
INTERSECT
(SELECT deptno FROM scott.dept);
--结果:

    DEPTNO
----------
        10
        20
        30

差操作的嵌套查询
差操作就是集合中差集的概念。(我好久没有理解这差集,现在都忘记了,来记录一下)
属于集合A且不属于集合B的元素总和就是差集。

(SELECT deptno FROM scott.dept)
MINUS
(SELECT deptno FROM scott.emp);
--结果:
    DEPTNO
----------
        40

--从MS SQL上理解可以相当于语句:
SELECT scott.dept.deptno FROM scott.dept
LEFT  OUTER JOIN scott.emp ON scott.emp.deptno=scott.dept.deptno WHERE scott.emp.deptno IS NULL;
--或者:
SELECT scott.dept.deptno FROM scott.dept
LEFT JOIN scott.emp ON scott.emp.deptno=scott.dept.deptno WHERE scott.emp.deptno IS NULL
;

--结果:

    DEPTNO
----------
        40