什么是带MySQL子查询的 ‚ÄòALL‚Äô、‚ÄòANY‚Äô、‚ÄôSOME‚Äô、‚ÄôIN‚Äô 运算符的用途?
‚ÄòALL‚Äô、‚ÄòANY‚Äô、’SOME‘、’IN’ 运算符将值与子查询返回的每个值进行比较。所有这些运算符都必须遵循比较运算符。使用这些运算符与MySQL子查询的语法如下所示:
阅读更多:MySQL 教程
使用 ‘ALL’ 的语法
Operand comparison_operator ALL (subquery)
使用 ‘ANY’ 的语法
Operand comparison_operator ANY (subquery)
使用 ‘SOME’ 的语法
Operand comparison_operator SOME (subquery)
使用 ‘IN’ 的语法
Operand comparison_operator IN (subquery)
示例
为了说明使用 ‚ÄòALL‚Äô、‚ÄòANY‚Äô、’SOME‘、’IN’ 运算符与子查询的用法,我们使用以下表中的数据。
mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name |
+-------------+----------+
| 1 | Rahul |
| 2 | Yashpal |
| 3 | Gaurav |
| 4 | Virender |
+-------------+----------+
4 rows in set (0.00 sec)
mysql> Select * from Reservations;
+------+-------------+------------+
| ID | Customer_id | Day |
+------+-------------+------------+
| 1 | 1 | 2017-12-30 |
| 2 | 2 | 2017-12-28 |
| 3 | 2 | 2017-12-29 |
| 4 | 1 | 2017-12-25 |
| 5 | 3 | 2017-12-26 |
+------+-------------+------------+
5 rows in set (0.00 sec)
以下查询使用了带子查询的 ‚ÄòALL‚Äô 运算符,并在比较子查询返回的所有值后返回结果。
mysql> SELECT customer_id from Customers WHERE customer_id <> ALL(Select customer_id from reservations);
+-------------+
| customer_id |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
以下查询使用了带子查询的 ‚ÄòANY‚Äô 运算符,并在比较子查询返回的所有值后返回结果。
mysql> SELECT customer_id from customers WHERE customer_id = ANY(Select customer_id from reservations);
+-------------+
| customer_id |
+-------------+
| 1 |
| 2 |
| 3 |
+-------------+
3 rows in set (0.00 sec)
以下查询使用了带子查询的 ‚ÄòSOME‚Äô 运算符,并在比较子查询返回的所有值后返回结果。
mysql> SELECT customer_id from customers WHERE customer_id = Some(Select customer_id from reservations);
+-------------+
| customer_id |
+-------------+
| 1 |
| 2 |
| 3 |
+-------------+
3 rows in set (0.00 sec)
以下查询使用了带子查询的 ‚ÄòIN‚Äô 运算符,并在比较子查询返回的所有值后返回结果。
mysql> SELECT customer_id from customers WHERE customer_id IN (Select customer_id from reservations);
+-------------+
| customer_id |
+-------------+
| 1 |
| 2 |
| 3 |
+-------------+
3 rows in set (0.00 sec)
极客教程