• 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
  • 相关阅读:
    痞子衡嵌入式:MCUBootUtility v5.3发布,利用XMCD轻松使能外部RAM
    iOS18新增通话录音和应用锁!附升级教程及内置壁纸
    营销科学中的边际ROI计量随笔记
    7.9 - 访问控制实现方式 7.10 - 用户口令保护策略
    基于SD卡的嵌入式Linux系统镜像制作
    骨传导耳机怎么听到声音?骨传导耳机是否会对听力造成损害?
    React学习--- 事件处理
    网页JS自动化脚本(一)安装油猴或暴力猴等脚本管理器并新建脚本
    基于JAVA网络饮品销售管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    Visual Studio 集成了.NET 升级助手插件
  • 原文地址:https://blog.csdn.net/weiguang102/article/details/127708570