MySQL中 any,some,all 的用法

约定不等于承诺〃 2023-10-07 20:58 135阅读 0赞

阅读目录

  • 一、any,some,all
    • all 逻辑运算符
    • any 和 some 运算符

一、any,some,all

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

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

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

all 逻辑运算符

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

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

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

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

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

any 和 some 运算符

any 和 some 作用是一样的。

例如

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

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

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

  1. SELECT
  2. *
  3. FROM
  4. chat_communication
  5. WHERE
  6. fromid = 87
  7. AND fromid > ANY (
  8. SELECT
  9. fromid
  10. FROM
  11. chat_communication
  12. WHERE
  13. fromid = 85
  14. );
  15. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  16. | id | fromid | fromname | toid | toname | content | time | shopid | isread | type |
  17. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  18. | 2 | 87 | 大金 | 85 | Love violet life | 你也好 | 1517888712 | NULL | 1 | 1 |
  19. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  20. 1 row in set (0.00 sec)
  21. SELECT
  22. *
  23. FROM
  24. chat_communication
  25. WHERE
  26. fromid = 87
  27. AND fromid > SOME (
  28. SELECT
  29. fromid
  30. FROM
  31. chat_communication
  32. WHERE
  33. fromid = 85
  34. );
  35. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  36. | id | fromid | fromname | toid | toname | content | time | shopid | isread | type |
  37. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  38. | 2 | 87 | 大金 | 85 | Love violet life | 你也好 | 1517888712 | NULL | 1 | 1 |
  39. +----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
  40. 1 row in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,135人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysqlcomment

    mysql中的comment用法 在MySQL数据库中,字段或列的注释是用属性comment来添加。 创建新表的脚本中, 可在字段定义脚本中添加comment属性来添

    相关 MySQLcase

    “入目诗成天又雪,与梅并作十分春” 序 最近看书得MySQL中case的几种用法,分享给大家。以下内容基于MySQL5.7.18。 用法 1. case行转列用

    相关 MySQLEXISTS

    MySQL中EXISTS的用法 Mysql中我们用的最多的多个值查询in,但in有很多缺点,例如效率不高,如果存在null值Mysql还无法执行导致整个程序报错.接下来这...