子查询是一个强大的概念,允许您在WHERE子句中使用另一个查询的结果。这允许您将动态值传递给WHERE子句,因为该值将取决于查询的结果。
以下是子查询的示例:
SELECT * FROM actor
WHERE actor_id IN
(SELECT actor_id FROM film_actor
where film_id = 2);
结果:

在上面的示例中,子查询括在括号中。
我们检索谁在影片中出现了所有演员的细节film_id的2。我们可以这样做,因为film_actor表包含actor_id和film_id列。
子查询也可以称为“内部查询”或“内部选择”。包含子查询的语句也可以称为“外部查询”或“外部选择”。
嵌套子查询
如果需要,可以将子查询嵌套在另一个子查询中。
在上面的例子中,我们不得不使用film_id因为该film_actor表不包含电影标题。如果我们可以使用电影标题而不是必须记住我们需要查看的每部电影的电影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”)
);
结果:

上面的示例使用嵌套子查询film_id从film表中检索title等于的表Ace Goldfinger。这恰好与前一个例子中的电影相同(它film_id是2),因此,我们获得与前一个示例相同的演员列表。
所以,现在我们需要做的就是想一个电影片头,我们可以找回它的演员 - 不需要试着记住电影ID。
0.0000
0
4
关注作者
收藏
发表评论
暂无数据

