MySQL标量子查询返回什么类型的输出?在MySQL查询中使用它有哪些限制?
MySQL标量子查询从一行中返回一个精确的列值,我们可以在允许单列的地方使用它。以下是标量子查询返回非单行值的情况:
情况1 - 返回0行
如果子查询返回0行,则标量子查询表达式的值为NULL。
情况2 - 返回多行
如果子查询返回多行,由于标量子查询的特性,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(没有id等于10)。
在MySQL查询中使用标量子查询的限制是,我们只能将标量子查询与仅允许字面值的语句一起使用。例如,众所周知,LIMIT需要字面整数参数,因此我们不能使用标量子查询来提供这些值。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP