📅  最后修改于: 2023-12-03 15:08:48.366000             🧑  作者: Mango
在 SQL 中,有时候需要查询两个表中的重复记录。这个过程也叫做“交集查询”,我们可以使用 SQL 的 INNER JOIN 语句来实现这个功能。
INNER JOIN 语句是 SQL 中最常用的 JOIN 类型,它返回两个表中所有满足条件的记录。INNER JOIN 通常与 ON 条件一起使用,指定两个表之间的连接条件。
SELECT *
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
这条语句会返回两个表中所有 column_name 列值相等的行。如果两个表中没有相等的列,则会返回空白结果集。
要查询两个表中的重复记录,我们可以使用 INNER JOIN 语句。假设你有两个表:table1 和 table2,它们都有一个名叫 column_name 的列,我们可以使用以下语句:
SELECT table1.column_name
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
这条语句会返回 table1 和 table2 中所有相等的 column_name 列值。
如果你想查询其他列的重复值,可以选择将它们添加到 SELECT 语句中,例如:
SELECT table1.column1, table1.column2, table2.column3
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
为了更好的说明以上的 INNER JOIN 语句的使用方法,我们可以使用以下两个示例表:
table1:
id | name | age
----|--------|-----
1 | Tom | 25
2 | John | 27
3 | Lucy | 26
4 | Lily | 22
5 | Amy | 24
table2:
id | name | age
----|--------|-----
1 | Tom | 26
2 | John | 27
3 | Grace | 25
4 | Tony | 23
5 | Amy | 24
现在我们想要查询 table1 和 table2 中所有 age 字段相同的记录,可以使用以下 SQL:
SELECT table1.id, table1.name, table1.age
FROM table1
INNER JOIN table2
ON table1.age = table2.age;
它会返回以下结果:
id | name | age
----|--------|-----
1 | Tom | 25
2 | John | 27
5 | Amy | 24
可以看到,只有 Tom, John 和 Amy 的 age 值在两个表中都有,这些记录被返回了。
INNER JOIN 语句是 SQL 中最常用的 JOIN 类型,可以帮助我们查询两个表中的重复记录。要使用 INNER JOIN 语句,我们需要指定两个表之间的连接条件,并根据查询需求选择需要的列。