簡體   English   中英

MySQL子選擇並從子選擇表返回多個記錄

[英]MySQL sub select and return multiple records from the sub select table

我不知道這是否可能,但是mysql可以做一個子選擇並檢索多個記錄嗎?

這是我的簡化查詢:

SELECT table1.*, 
(
SELECT      table2.*
FROM        Table2 table2
WHERE       table2.key_id = table1.key_id   
)
FROM Table1 table1 

基本上,表2有X條記錄,我需要在查詢中回退,並且我不想運行輔助查詢(例如,從表1中獲取結果,然后遍歷這些結果,然后獲取所有結果從表2)。

謝謝。

號子查詢中的SELECT子句被稱為標量子查詢 標量子查詢具有兩個重要屬性:

  • 它只能檢索一列。
  • 它只能檢索零或一行。

顧名思義,標量子查詢可替換表達式中的標量值。 如果子查詢不返回任何行,則表達式中使用的值為NULL

您可以使用LEFT JOIN代替:

SELECT t1.*, t2.*
FROM Table1 t1 LEFT JOIN
     Table2 t2
     ON t2.key_id = t1.keyid;

請注意,表別名是一件好事。 但是,它們應該使查詢更簡單,因此重復表名並不是大贏家。

MySQL可以執行返回多行或多列的子查詢,但是在標量上下文中這樣做是無效的。

您正在將子查詢置於標量上下文中。 換句話說,在選擇列表中,子查詢必須返回一列和一行(或零行),因為當它使用選擇列表生成結果時,它將用於相應行上的一項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM