SQL WHERE IN子句

在SQL中,我们可以使用WHERE In子句过滤出给定数据库中的结果。WHERE IN子句允许我们从给定数据库中选择与给定列表中的一个或多个指定值匹配的行。

在本教程中,我们将探索WHERE In子句,了解如何使用它从给定表或结果集中过滤出结果。

SQL WHERE IN子句

SQL中WHERE IN子句的基本语法如下:

SELECT column1, column2,…
从table_name
WHERE column_name IN (value1, value2,…);

我们从一个基本的“select”语句开始,后面跟着我们希望包含在结果集中的列。

接下来,指定希望从中检索结果的表。最后,使用WHERE子句指定筛选条件,后面跟着要筛选的列的名称。在IN子句之后,我们指定一个要用于筛选的值列表。

示例1:筛选单个结果

为了更好地演示如何使用WHERE IN子句,让我们看一个示例。考虑Sakila示例数据库中的“film”表。

假设我们希望检索所有评级为PG或PG-13的电影。我们可以这样使用WHERE IN子句:

SELECT title, release_year, rating
从电影
WHERE rating IN ('PG');

在本例中,我们提供了希望在In子句中检索的单个值的列表。

例2:过滤多个值

我们还可以在值列表中指定多个项。例如,要检索评级为PG和PG-13的电影列表,我们可以运行如下查询:

SELECT title, release_year, rating
从电影
WHERE rating IN ('PG', 'PG-13');

结果输出如下:

示例3:带有子查询的过滤器

我们还可以在子查询中使用WHERE IN,它允许我们从给定的结果集中过滤出结果。

假设我们希望根据语言筛选电影。例如,要检索英语和日语的电影,我们可以在子查询中使用WHERE in:

SELECT title, release_year, rating
选自电影f
WHERE language_id IN (
选择language_id
从语言
名称在哪里('英语','日语')
);

在本例中,我们创建了一个子查询,它从“languages”表中检索英语和日语的“language_id”值。在主查询中,我们根据得到的“language_id”值选择电影。

结论

在这篇文章中,我们学习了如何使用SQL中的WHERE In子句来过滤掉给定列表中匹配单个或多个值的结果。