[英]mySQL - Nested Select return list?
我正在嘗試編寫一些mySQL,但是今天大腦似乎無法正常工作。 我有兩個表,結構如下。
表1: ID,名稱,詳細信息
表2: id,類型,值
id鏈接兩個表。
因此,我要嘗試執行的操作類似於以下內容,其中我基於嵌套選擇的結果返回記錄。
SELECT * FROM table1 WHERE name = 'someName' AND id = (SELECT id FROM table2 WHERE type = 'type1')
有人有想法么?
試試這個作為解決方案
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
AND table2.type = 'type1'
WHERE table1.name = 'someName'
這是JOIN
的作用:
SELECT * FROM table1 JOIN table2 USING (id)
WHERE type = 'type1' AND name = 'someName'
順便說一句,據我所知,除非id
可以重復,否則沒有理由將它們放在單獨的表中,這可能是不好的。
該查詢是從右到左執行的。 它從table2返回類型='type1'的行,可能是1或更多行,然后從內部查詢(table2)的結果執行第一個查詢(外部),並返回ID為內部查詢(table2)的結果中存在外部查詢(table1),如果沒有結果,查詢引擎將終止查詢;如果有結果,它現在將基於where子句(name ='someName' )(外部表(表1)),如果找到結果,則返回結果,否則查詢引擎將在此處終止。
基本上,我們按此順序編寫查詢; 通過排序從中選擇組
但是處理順序是這樣的; 通過選擇順序從哪里分組
當查詢引擎執行查詢時,它將經過一個或多個表的每個階段作為輸入,並返回一個虛擬表作為輸出,查詢的一個階段的輸出就是查詢的下一階段的輸入。
希望這可以幫助您更好地了解查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.