子查詢是一個(gè)強(qiáng)大的概念,允許您在WHERE
子句中使用另一個(gè)查詢的結(jié)果。這允許您將動(dòng)態(tài)值傳遞給WHERE
子句,因?yàn)樵撝祵⑷Q于查詢的結(jié)果。
以下是子查詢的示例:
SELECT * FROM actor
WHERE actor_id IN
(SELECT actor_id FROM film_actor
where film_id = 2);
結(jié)果:

在上面的示例中,子查詢括在括號(hào)中。
我們檢索誰(shuí)在影片中出現(xiàn)了所有演員的細(xì)節(jié)film_id
的2
。我們可以這樣做,因?yàn)?code>film_actor表包含actor_id
和film_id
列。
子查詢也可以稱為“內(nèi)部查詢”或“內(nèi)部選擇”。包含子查詢的語(yǔ)句也可以稱為“外部查詢”或“外部選擇”。
嵌套子查詢
如果需要,可以將子查詢嵌套在另一個(gè)子查詢中。
在上面的例子中,我們不得不使用film_id
因?yàn)樵?code>film_actor表不包含電影標(biāo)題。如果我們可以使用電影標(biāo)題而不是必須記住我們需要查看的每部電影的電影ID,那將更好。這是嵌套子查詢可以派上用場(chǎng)的地方。
我們可以使用這樣的嵌套子查詢:
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
。這恰好與前一個(gè)例子中的電影相同(它film_id
是2),因此,我們獲得與前一個(gè)示例相同的演員列表。
所以,現(xiàn)在我們需要做的就是想一個(gè)電影片頭,我們可以找回它的演員 - 不需要試著記住電影ID。








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