MySQL中 any,some,all 的用法
mysql 用法 all any some
2023-09-11 14:14:56 时间
一、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)
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
);
+----+--------+----------+------+------------------+--------------+------------+--------+--------+------+
| 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)
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
);
+----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
| 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)
SELECT
*
FROM
chat_communication
WHERE
fromid = 87
AND fromid > SOME (
SELECT
fromid
FROM
chat_communication
WHERE
fromid = 85
);
+----+--------+----------+------+------------------+-----------+------------+--------+--------+------+
| 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)
相关文章
- mysql变量使用总结(转)
- mysql在命令行中,指定要连接的数据库?
- MySQL数据库运维的五大指标
- MySQL基本数据库管理命令
- 关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步
- JDBC连接MySQL数据库小例子
- [转]操作MySQL数据库报出:Parameter index out of range (1 > number of parameters, which is
- 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
- 【MySQL】如何向mysql数据库插入当前时间
- 【mysql报错】mysqld_safe Directory ‘/var/lib/mysql‘ for UNIX socket file don‘t exists.
- 【mysql】MySQL的sql_mode模式说明及设置
- 基于Java+MySQL实现燃气管进销存管理系统【100010498】
- mysql慢查询,mysql慢查询日志
- 转mysql 锁的文章
- 转 【MySQL】常用拼接语句 shell 下执行mysql 命令
- python操作mysql数据库系列-操作MySql数据库(五)
- python操作mysql数据库系列-安装MySql
- Mysql命令mysql:连接Mysql数据库
- Windows 免安装版mysql,适用于版本MySQL 5.7.7及以上,快速配置教程
- Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)
- mysql远程连接 Host is not allowed to connect to this MySQL server
- MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题
- mysql 除法运算保留小数的用法
- Mysql依赖库Boost的源码安装,linux下boost库的安装
- Amoeba for MySQL 非常好用的mysql集群软件
- ubuntu15.04中安装mysql和mysql-workbench
- mysql窗口函数、Mysql分析函数