📜  SQL Server相交运算符(1)

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

SQL Server相交运算符

相交运算符用于将两个查询结果集的公共部分返回。

语法
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。