[英]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.