• MySQL中 any,some,all 的用法


    一、any,some,all

    any,some,all 是 MySQL 当中的逻辑运算符,作用是将子查询返回的单列值的集合与查询的单个值作比较。

    any,all,some 前面需跟比较运算符(>, >=, <, <=, !=, =,但是这里的单个使用 = 号的情况只有子集的数据是单个值或者子集数据全部相同才能符合情况,如果子集是多个不同的就不满足,根据实际情况使用)

    mysql> select * from chat_communication;
    +----+--------+------------------+------+------------------+--------------+------------+--------+--------+------+
    | id | fromid | fromname         | toid | toname           | content      | time       | shopid | isread | type |
    +----+--------+------------------+------+------------------+--------------+------------+--------+--------+------+
    |  1 |     85 | Love violet life |   87 | 大金             | 你好         | 1517888705 |   NULL |      1 |    1 |
    |  2 |     87 | 大金             |   85 | Love violet life | 你也好       | 1517888712 |   NULL |      1 |    1 |
    |  3 |     89 | 雨薇             |   87 | 大金             | 你在干嘛     | 1517888760 |   NULL |      1 |    1 |
    |  4 |     85 | Love violet life |   87 | 大金             | 你还在吗     | 1517888797 |   NULL |      0 |    1 |
    |  5 |     85 | Love violet life |   87 | 大金             | 订单         | 1517888872 |   NULL |      0 |    1 |
    +----+--------+------------------+------+------------------+--------------+------------+--------+--------+------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    all 逻辑运算符

    例如:select …from …where c > all(…)

    表示 c 列中的值必须要大于子查询集的每一个值,即必须要大于子查询集的最大值;

    如果是小于号即小于子查询集的最小值。同理可以推出其它的比较运算符的情况。

    示例:列中的值必须要大于子查询集的每一个值
    查询 fromid 大于 fromid = 85 所有数据。

    SELECT
    	*
    FROM
    	chat_communication
    WHERE
    	fromid > ALL (
    		SELECT
    			fromid
    		FROM
    			chat_communication
    		WHERE
    			fromid = 85
    	);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    +----+--------+----------+------+------------------+--------------+------------+--------+--------+------+
    | id | fromid | fromname | toid | toname           | content      | time       | shopid | isread | type |
    +----+--------+----------+------+------------------+--------------+------------+--------+--------+------+
    |  2 |     87 | 大金     |   85 | Love violet life | 你也好       | 1517888712 |   NULL |      1 |    1 |
    |  3 |     89 | 雨薇     |   87 | 大金             | 你在干嘛     | 1517888760 |   NULL |      1 |    1 |
    +----+--------+----------+------+------------------+--------------+------------+--------+--------+------+
    2 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    any 和 some 运算符

    any 和 some 作用是一样的。

    例如

    select…from…where c > any(…)
    或者
    select …from …where c > some(…)

    表示 c 列中的值要大于子查询中的任意一个值,即必须要大于子查询集中的最小值。同理可以推出其它的比较运算符的情况。

    示例: 查询 fromid = 87 至少大于 fromid = 85 的数据

    SELECT
    	*
    FROM
    	chat_communication
    WHERE
    	fromid = 87
    AND fromid > ANY (
    	SELECT
    		fromid
    	FROM
    		chat_communication
    	WHERE
    		fromid = 85
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    | id | fromid | fromname | toid | toname           | content   | time       | shopid | isread | type |
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    |  2 |     87 | 大金     |   85 | Love violet life | 你也好    | 1517888712 |   NULL |      1 |    1 |
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    SELECT
    	*
    FROM
    	chat_communication
    WHERE
    	fromid = 87
    AND fromid > SOME (
    	SELECT
    		fromid
    	FROM
    		chat_communication
    	WHERE
    		fromid = 85
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    | id | fromid | fromname | toid | toname           | content   | time       | shopid | isread | type |
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    |  2 |     87 | 大金     |   85 | Love violet life | 你也好    | 1517888712 |   NULL |      1 |    1 |
    +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    广东建筑覆膜板厂家
    Mybatis事务如何跟Spring结合到一起?
    深度学习常见的transform和dataloder联合transform
    WIN10如何搭建自己的博客
    C++数据结构X篇_21_插入排序(稳定的排序)
    【python笔记】客户运营 - cohort分析
    户外运动崛起!疫情后这些产品将成为跨境热门品类!
    SAP BC TSV_TNEW_PAGE_ALLOC_FAILED
    DFS 、BFS、回溯
    5种kafka消费端性能优化方法
  • 原文地址:https://blog.csdn.net/weiguang102/article/details/127708570