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