簡體   English   中英

MySQL-嵌套選擇返回列表?

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

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