MySQL标量子查询返回什么类型的输出?在MySQL查询中使用它有哪些限制?

MySQL标量子查询返回什么类型的输出?在MySQL查询中使用它有哪些限制?

MySQL标量子查询从一行数据中仅返回一个列值,我们可以将其用于只允许单个列的情况。以下情况会使标量子查询返回一行外的其他值 –

阅读更多:MySQL 教程

情况1 – 当它返回0行时

如果子查询返回0行,则标量子查询表达式的值为NULL。

情况2 – 当它返回多于1行时

如果子查询返回多于1行,则由于标量子查询的属性,MySQL会返回一个错误。

以下示例可以帮助理解,该示例使用以下表中的数据 –

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)

现在,以下查询将返回仅一个行的一个列值 –

mysql> Select Name from Customers WHERE customer_id = (Select Customer_id FROM reservations where id = 3);
+---------+
| Name    |
+---------+
| Yashpal |
+---------+
1 row in set (0.00 sec)

现在,如果假设子查询返回0行,则表示标量子查询表达式的值是NULL。如以下查询所示 –

mysql> Select Name from Customers WHERE customer_id = (Select Customer_id FROM reservations where id = 10);
Empty set (0.00 sec)

我们可以从上面的结果集中看到MySQL返回空集即0行,因为标量子查询表达式的值为NULL(没有等于10的ID)。

在MySQL查询中使用标量子查询的限制是,我们只能使用允许字面值的语句与标量子查询一起使用。例如,我们知道LIMIT需要字面整数参数,因此无法使用标量子查询来提供这些值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程