首页 > 数据库 >MySQL中 any,some,all 的用法

MySQL中 any,some,all 的用法

时间:2023-02-09 11:06:49浏览次数:44  
标签:some any MySQL fromid NULL 87 85

阅读目录

一、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)

标签:some,any,MySQL,fromid,NULL,87,85
From: https://blog.51cto.com/u_13571520/6046052

相关文章

  • MySQL查询某天的数据
    阅读目录1、DATE_FORMAT()函数用于以不同的格式显示日期/时间数据2、DATEDIFF()函数返回两个日期之间的天数扩展知识1、DATE_FORMAT()函数用于以不同的格式......
  • MySQL给查询加序号
    阅读目录数据表MySQL给查询加序号解释说明相关知识点数据表DROPTABLEIFEXISTStb_score;CREATETABLEtb_score(idINT(11)NOTNULLauto_incr......
  • MySQL中 replace 替换字符
    阅读目录语法:replace(field,search,replace)说明:field-数据库表的列名search-需要替换的字符串replace-替换成的字符串语义:将列名:field中出现......
  • MySQL查看库中所有表的大小和记录数
    阅读目录说明说明TABLE_NAME:表名字;DATA_LENGTH:数据大小;INDEX_LENGTH:索引大小;TABLE_ROWS:记录数量;TABLE_SCHEMA:数据库名字;ENGINE:所使用的存储引擎;......
  • MySQL的数据结构
    阅读目录MySQL数据结构用b+tree做的为什么不用红黑树叉树呢?什么是B-Tree(B-树)?什么是B+Tree?B+Tree相对于B-Tree的几点不同MySQL数据结构用b+tree......
  • MySQL数据行怎么转为列
    阅读目录行转列1、使用case...when....then进行行转列2、使用IF()进行行转列3、利用SUM(IF())生成列+WITHROLLUP生成汇总行,并利用IFNULL将汇总行标......
  • mysql分组排序
    mysql的分组排序在实际应用中是经常用到的之前用pgsql的时候是有窗口函数来实现的,非常方便row_number()over(partitionby分组字段orderby排序字段desc)但是现......
  • yum 安装MySql8.0
    一、下载官方YUM仓库https://dev.mysql.com/downloads/repo/yum/    二、登陆Linux服务器用Wgethttps://dev.mysql.com/get/mysql80-community-release-el8-......
  • 7、install_mysql_httpd_php_wordpress
    #!/bin/bash##********************************************************************#Author: zikang#QQ: [email protected]#Date: 2021-03-03......
  • mysql 8.0x 中start service失败,以及check检查处理
    大体内容如下:一、下载MySQL首先,下载MySQL地址:https://dev.mysql.com/downloads/mysql/。点击GotoDownloadPage  跳转至此界面点击Download:  进入下载页......