📜  如何在 SQL 中查询两个表的重复值?(1)

📅  最后修改于: 2023-12-03 15:08:48.366000             🧑  作者: Mango

如何在 SQL 中查询两个表的重复值?

在 SQL 中,有时候需要查询两个表中的重复记录。这个过程也叫做“交集查询”,我们可以使用 SQL 的 INNER JOIN 语句来实现这个功能。

1. INNER JOIN 语句简介

INNER JOIN 语句是 SQL 中最常用的 JOIN 类型,它返回两个表中所有满足条件的记录。INNER JOIN 通常与 ON 条件一起使用,指定两个表之间的连接条件。

SELECT *
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

这条语句会返回两个表中所有 column_name 列值相等的行。如果两个表中没有相等的列,则会返回空白结果集。

2. 查询两个表的重复值

要查询两个表中的重复记录,我们可以使用 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;
3. 示例说明

为了更好的说明以上的 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 值在两个表中都有,这些记录被返回了。

4. 总结

INNER JOIN 语句是 SQL 中最常用的 JOIN 类型,可以帮助我们查询两个表中的重复记录。要使用 INNER JOIN 语句,我们需要指定两个表之间的连接条件,并根据查询需求选择需要的列。