📅  最后修改于: 2023-12-03 15:05:17.965000             🧑  作者: Mango
相交运算符用于将两个查询结果集的公共部分返回。
SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;
注:相交运算符只能用于 SELECT 语句中。
我们使用以下 SQL 语句创建 Customers 和 Orders 表格:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(255) NOT NULL,
ContactName VARCHAR(255) NOT NULL,
Country VARCHAR(255) NOT NULL
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE NOT NULL,
Amount FLOAT NOT NULL
);
然后我们插入数据到这两个表格中:
INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (1, 'John Doe', 'Peter Smith', 'USA');
INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (2, 'Jane Smith', 'Linda Johnson', 'Canada');
INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (3, 'Bob Brown', 'Jack Brown', 'UK');
INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (4, 'Charlie Johnson', 'David Lee', 'USA');
INSERT INTO Orders (OrderID, CustomerID, OrderDate, Amount)
VALUES (1, 1, '2020-01-01', 1000);
INSERT INTO Orders (OrderID, CustomerID, OrderDate, Amount)
VALUES (2, 2, '2020-01-02', 2000);
INSERT INTO Orders (OrderID, CustomerID, OrderDate, Amount)
VALUES (3, 3, '2020-01-03', 1500);
INSERT INTO Orders (OrderID, CustomerID, OrderDate, Amount)
VALUES (4, 1, '2020-01-04', 1200);
INSERT INTO Orders (OrderID, CustomerID, OrderDate, Amount)
VALUES (5, 2, '2020-01-05', 3000);
使用相交运算符查询同时存在于 Customers 和 Orders 表格中的客户:
SELECT CustomerName
FROM Customers
INTERSECT
SELECT Customers.CustomerName
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
这个查询语句返回:
| CustomerName |
|--------------|
| John Doe |
| Jane Smith |
首先我们在 SELECT 语句的第一个部分中选择了 Customers 表格中的客户名称。
在 INTERSECT 运算符之后,我们选择了一个子查询,该子查询使用 INNER JOIN 连接了 Customers 和 Orders 表格,然后选择了 Customers 表格中的客户名称。
因此,这个查询语句将返回同时存在于 Customers 和 Orders 表格中的客户名称,John Doe 和 Jane Smith。
相交运算符在 SQL Server 中非常有用,可以允许程序员快速且简单地查询两个结果集之间的交集。相交运算符需要在 SELECT 语句中使用,并且可以与其他任何 SQL 语句一起使用,例如 INNER JOIN。