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需要字面整數引數,因此我們不能使用標量子查詢來提供這些值。

更新於:2020年6月22日

341 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.