SQL INTERSECT操作符

SQL INTERSECT操作符

在集合论中,两个集合的交集是共同存在于两个集合中的值的集合。换句话说,两个集合的交集是同时存在于两个集合中的元素的集合。让我们以下表作为示例来更好地理解这个概念-

SQL INTERSECT操作符

如果我们使用 INTERSECT 运算符对两个集合执行交集操作,它将返回两个集合中的共同行,即 58 。该运算符从最终结果集中删除重复的行。

SQL中的INTERSECT操作符

在SQL中,使用 INTERSECT 操作符检索两个SELECT(表)语句的结果集中相同/重复的记录。

在实际场景中,数据库中可能包含大量包含信息的表。用户可能会发现从各个表中收集共同信息具有挑战性。因此,我们使用INTERSECT操作符来实现这一目标。它可以帮助检索各个表中的共同数据。

语法

为了从两个不同的表中检索相同的记录,我们使用以下语法−

SELECT column1, column2,…, columnN
FROM table1, table2,…, tableN
INTERSECT
SELECT column1, column2,…, columnN
FROM table1, table2,…, tableN

Note − INTERSECT 操作有一些强制规则,例如 SELECT 语句中的列数、数据类型和其他列必须在两个 SELECT 语句中相同,INTERSECT 操作符才能正确工作。

示例

首先,让我们使用以下查询创建一个名为 “ STUDENTS ” 的表 −

SQL> CREATE TABLE STUDENTS(
ID INT NOT NULL, 
NAME VARCHAR(20) NOT NULL, 
HOBBY VARCHAR(20) NOT NULL, 
AGE INT NOT NULL, 
PRIMARY KEY(ID)
);

一旦创建了表格,让我们使用以下查询将一些值插入到表格中-

SQL> INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(1, 'Vijay', 'Cricket', 18);
INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(2, 'Varun', 'Football', 26);
INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(3, 'Surya', 'Cricket', 19);
INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(4, 'Karthik', 'Cricket', 25);
INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(5, 'Sunny', 'Football', 26);
INSERT INTO STUDENTS(ID, NAME, HOBBY, AGE) VALUES(6, 'Dev', 'Cricket', 23);

让我们使用以下查询来验证表“ STUDENTS ”是否已创建:

SQL> SELECT * FROM STUDENTS;

如下所示,表已经在数据库中创建。<\p>

+-----+----------+--------------+-------+
| ID  |  NAME    |    HOBBY     |  AGE  |
+-----+----------+--------------+-------+
| 1   |  Vijay   |   Cricket    |   18  |
| 2   |  Varun   |   Football   |   26  |
| 3   |  Surya   |   Cricket    |   19  |
| 4   |  Karthik |   Cricket    |   25  |
| 5   |  Sunny   |   Football   |   26  |
| 6   |  Dev     |   Cricket    |   23  |
+-----+----------+--------------+-------+

让我们使用以下查询创建另一张表“ ASSOCIATES ”。

SQL> CREATE TABLE ASSOCIATES(
ID INT NOT NULL, 
NAME VARCHAR(20) NOT NULL, 
SUBJECT VARCHAR(20) NOT NULL, 
AGE INT NOT NULL, 
HOBBY VARCHAR(20) NOT NULL, 
PRIMARY KEY(ID)
);

让我们使用以下查询将一些值插入到表中 –

SQL> INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(1, 'Naina', 'Maths', 24, 'Cricket');
INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(2, 'Varun', 'Physics', 26, 'Football');
INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(3, 'Dev', 'Maths', 23, 'Cricket');
INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(4, 'Priya', 'Physics', 25, 'Cricket');
INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(5, 'Aditya', 'Chemistry', 21, 'Cricket');
INSERT INTO ASSOCIATES(ID, NAME, SUBJECT, AGE, HOBBY) VALUES(6, 'Kalyan', 'Maths', 30, 'Football');

让我们使用以下查询来验证表格“ ASSOCIATES ”是否已创建:

SQL> SELECT * FROM ASSOCIATES;

从下面的输出中可以看到,表已经在数据库中创建了。

+-----+----------+---------------+-------+----------+
| ID  |  NAME    |    SUBJECT    |  AGE  |  HOBBY   |
+-----+----------+---------------+-------+----------+
| 1   |  Naina   |   Mathematics |   24  | Cricket  |
| 2   |  Varun   |   Physics     |   26  | Football | 
| 3   |  Dev     |   Mathematics |   23  | Cricket  |
| 4   |  Priya   |   Physics     |   25  | Cricket  |
| 5   |  Adithya |   Chemistry   |   21  | Cricket  |
| 6   |  Kalyan  |   Mathematics |   30  | Football |
+-----+----------+--------------+-------+-----------+

现在,我们正在尝试使用以下查询从两个表中检索公共记录。

SQL> SELECT NAME, AGE, HOBBY FROM STUDENTS
INTERSECT 
SELECT NAME, AGE, HOBBY FROM ASSOCIATES

输出

当我们执行上述查询时,输出如下:

+-----------+-------+----------+
|   NAME    |  AGE  |  HOBBY   |
+-----------+-------+----------+
|   Dev     |   23  | Cricket  |
|   Varun   |   26  | Football |
+-----------+-------+----------+

INTERSECT与BETWEEN运算符一起使用

正如我们在初始的语法中讨论的那样,我们还可以使用INTERSECT运算符与条件运算符一起使用。

我们可以在SQL中使用INTERSECT运算符与BETWEEN运算符来找到在指定范围内的行。

示例

现在,让我们检索同时出现在两个表中的记录。此外,我们将使用以下查询检索年龄在25到30之间的记录。

SQL> SELECT NAME, AGE, HOBBY FROM STUDENTS
WHERE AGE BETWEEN 25 AND 30

INTERSECT

SELECT NAME, AGE, HOBBY FROM ASSOCIATES
WHERE AGE BETWEEN 20 AND 30

输出

上述查询的输出如下所示−

+-----------+-------+----------+
|   NAME    |  AGE  |  HOBBY   |
+-----------+-------+----------+
|   Varun   |   26  | Football |
+-----------+-------+----------+

使用IN运算符与INTERSECT

在SQL中,我们还可以使用INTERSECT运算符与IN运算符结合使用,以查找具有指定值的公共行。IN运算符用于基于指定值列表对结果集进行过滤。

示例

在这里,我们尝试从两个表中检索共同记录。此外,我们使用 IN 运算符来检索爱好为“Cricket”的记录。

SQL> SELECT NAME, AGE, HOBBY FROM STUDENTS
WHERE HOBBY IN('Cricket')

INTERSECT

SELECT NAME, AGE, HOBBY FROM ASSOCIATES
WHERE HOBBY IN('Cricket')

输出

当我们执行上述查询时,输出结果如下:

+-----------+-------+----------+
|   NAME    |  AGE  |  HOBBY   |
+-----------+-------+----------+
|   Dev     |   26  | Cricket  |
+-----------+-------+----------+

使用LIKE操作符和INTERSECT进行匹配

LIKE操作符用于对字符串进行模式匹配。在SQL中,INTERSECT操作符也可以与LIKE操作符一起使用,以查找与指定模式匹配的公共行。

示例

让我们使用通配符‘ % ’和 LIKE 操作符从两个表的共同名称中检索以‘v’开头的名称。

SQL> SELECT NAME, AGE, HOBBY FROM STUDENTS
WHERE NAME LIKE 'v%'

INTERSECT

SELECT NAME, AGE, HOBBY FROM ASSOCIATES
WHERE NAME LIKE 'v%'

输出

上述查询的输出如下所示:

+-----------+-------+----------+
|   NAME    |  AGE  |  HOBBY   |
+-----------+-------+----------+
|   Varun   |   26  | Football |
+-----------+-------+----------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程