zoukankan      html  css  js  c++  java
  • 数据库——IN、ANY、SOME 和 ALL 操作符的使用

    sql中all,any,some用法

    简介:

    --All:对所有数据都满足条件,整个条件才成立,例如:5大于所有返回的id 
    select * 
    from #A 
    where 5>All(select id from #A) 

    --Any:只要有一条数据满足条件,整个条件成立,例如:3大于1,2 
    select * 
    from #A 
    where 3>any(select id from #A)

    详细

    MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用

    MySQL 列子查询

    列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回。

    一个列子查询的例子如下:

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

    列子查询中使用 IN、ANY、SOME 和 ALL 操作符

    由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的操作符。在列子查询中可以使用 IN、ANY、SOME 和 ALL 操作符:

    • IN:在指定项内,同 IN(项1,项2,…)。
    • ANY:与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。
    • SOME:ANY 的别名,较少使用。
    • ALL:与比较操作符联合使用,表示与子查询返回的所有值比较都为 TRUE ,则返回 TRUE 。

    下面是原始数据表:

    table1:
    s1
    2
    10
    table2:
    s2
    5
    12
    20

    ANY 操作符

    ANY 关键字必须接在一个比较操作符的后面,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。一个 ANY 例子如下:

    SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)

    查询返回结果如下所示:

    s1
    10

    在子查询中,返回的是 table2 的所有 s2 列结果(5,12,20),然后将 table1 中的 s1 的值与之进行比较,只要大于 s2 的任何值即表示为 TRUE,符合查询条件。

    IN 是 = ANY 的别名,二者相同,但 NOT IN 的别名却不是 <> ANY 而是 <> SOME。

    特殊情况

    • 如果 table2 为空表,则 ANY 后的结果为 FALSE;
    • 如果子查询返回如 (NULL,NULL,NULL) 列为空的结果,则 ANY 后的结果为 UNKNOWN 。

    ALL 操作符

    ALL 关键字必须接在一个比较操作符的后面,表示与子查询返回的所有值比较为 TRUE ,则返回 TRUE 。一个 ALL 例子如下:

    SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)

    该查询不会返回任何结果,因为 s1 中没有比 s2 所有值都大的值。

    当然在该例子查询中,返回了 s2 的所有值,您可以在该子查询中添加任何条件以限制返回的查询结果而无需全部返回。

    NOT IN 是 <> ALL 的别名,二者相同。

    特殊情况

    • 如果 table2 为空表,则 ALL 后的结果为 TRUE;
    • 如果子查询返回如 (0,NULL,1) 这种尽管 s1 比返回结果都大,但有空行的结果,则 ALL 后的结果为 UNKNOWN 。

    注意:对于 table2 空表的情况,下面的语句均返回 NULL:

    SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
    SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)
  • 相关阅读:
    The difference of the line-height:2 and line-height:2em
    Damao眼中的新媒体
    Damao教你如何使用MacDown
    SF Pro 项目中的css hack
    刷新一次,图片更换一次
    Markdown 初体验
    docker 部署gitlab 构建CI/CD流水线
    c#面向对象问题 WPF简单数据驱动
    WebApi的创建和调试(简单步骤)
    C语言实现的贪吃蛇小游戏
  • 原文地址:https://www.cnblogs.com/Chenshuai7/p/5135575.html
Copyright © 2011-2022 走看看