首頁 > 軟體

MySQL中any、some和all的用法範例

2022-11-11 14:02:07

一、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中any、some和all用法的文章就介紹到這了,更多相關MySQL any、some和all用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com