子查詢是一個強大的概念,允許您在WHERE
子句中使用另一個查詢的結(jié)果。這允許您將動態(tài)值傳遞給WHERE
子句,因為該值將取決于查詢的結(jié)果。
以下是子查詢的示例:
SELECT * FROM actor
WHERE actor_id IN
(SELECT actor_id FROM film_actor
where film_id = 2);
結(jié)果:

在上面的示例中,子查詢括在括號中。
我們檢索誰在影片中出現(xiàn)了所有演員的細節(jié)film_id
的2
。我們可以這樣做,因為film_actor
表包含actor_id
和film_id
列。
子查詢也可以稱為“內(nèi)部查詢”或“內(nèi)部選擇”。包含子查詢的語句也可以稱為“外部查詢”或“外部選擇”。
嵌套子查詢
如果需要,可以將子查詢嵌套在另一個子查詢中。
在上面的例子中,我們不得不使用film_id
因為該film_actor
表不包含電影標(biāo)題。如果我們可以使用電影標(biāo)題而不是必須記住我們需要查看的每部電影的電影ID,那將更好。這是嵌套子查詢可以派上用場的地方。
我們可以使用這樣的嵌套子查詢:
SELECT * FROM actor
WHERE actor_id IN
(SELECT actor_id FROM film_actor
where film_id =
(select film_id FROM actor
WHERE title= “Ace Goldfinger”)
);
結(jié)果:

上面的示例使用嵌套子查詢film_id
從film
表中檢索title
等于的表Ace Goldfinger
。這恰好與前一個例子中的電影相同(它film_id
是2),因此,我們獲得與前一個示例相同的演員列表。
所以,現(xiàn)在我們需要做的就是想一個電影片頭,我們可以找回它的演員 - 不需要試著記住電影ID。








暫無數(shù)據(jù)