什么是左链接
左链接,也叫左外连接,是SQL语言中用于将一张表中的所有记录与另一张表中匹配的记录连接起来,并且将没有匹配的记录也包含在结果集中的一种连接方式。具体来说,左链接可以将左边的表中所有的数据都查询出来,并且对于右表中匹配的数据也会查询出来,如果右表中没有匹配的记录,则在结果集中采用null值进行占位。
SQLServer中的左链接实现
基本语法
SQLServer中实现左链接的基本语法如下:
SELECT 列1, 列2, 列3, ...
FROM 表1
LEFT JOIN 表2
ON 表1.列名=表2.列名;
使用LEFT JOIN关键字进行左链接,需要在关键字后面指定要查询的表2,然后使用ON关键字指定两张表之间的匹配条件。
实例演示
下面我们通过一个具体的实例来演示SQLServer中的左链接实现。
假设我们有两张表,一张是订单表,一张是客户表。现在我们想要查询每个订单的客户信息,如果有客户的话,则将客户信息一起查询出来,如果没有客户的话,则将该信息设置为null值。
首先,我们创建两张表:OrderTable和CustomerTable
CREATE TABLE OrderTable
(
OrderID int PRIMARY KEY,
OrderNo varchar(50) NOT NULL,
OrderDate date NOT NULL,
CustomerID int FOREIGN KEY REFERENCES CustomerTable(CustomerID)
);
CREATE TABLE CustomerTable
(
CustomerID int PRIMARY KEY,
CustomerName varchar(50) NOT NULL,
ContactName varchar(50),
Country varchar(50),
City varchar(50),
PostalCode varchar(50)
);
然后我们往客户表中插入一些数据:
INSERT INTO CustomerTable VALUES (1, 'John Doe', 'John Doe', 'USA', 'New York', '10001');
INSERT INTO CustomerTable VALUES (2, 'Jane Smith', 'Jane Smith', 'USA', 'San Francisco', '94105');
INSERT INTO CustomerTable VALUES (3, 'Mike Brown', 'Mike Brown', 'USA', 'Los Angeles', '90001');
INSERT INTO CustomerTable VALUES (4, 'Lisa Jones', 'Lisa Jones', 'USA', 'Las Vegas', '89101');
INSERT INTO CustomerTable VALUES (5, 'Tom White', 'Tom White', 'USA', 'Chicago', '60601');
接着我们往OrderTable中插入一些数据,同时将部分订单关联到了客户表中:
INSERT INTO OrderTable VALUES (1, '20180101001', '2018-01-01', 2);
INSERT INTO OrderTable VALUES (2, '20180101002', '2018-01-01', 3);
INSERT INTO OrderTable VALUES (3, '20180102001', '2018-01-02', 1);
INSERT INTO OrderTable VALUES (4, '20180102002', '2018-01-02', NULL);
INSERT INTO OrderTable VALUES (5, '20180103001', '2018-01-03', 4);
现在,我们就可以通过左链接查询出每个订单对应的客户信息了:
SELECT OrderTable.OrderNo, OrderTable.OrderDate, CustomerTable.CustomerName, CustomerTable.Country, CustomerTable.City, CustomerTable.PostalCode
FROM OrderTable
LEFT JOIN CustomerTable
ON OrderTable.CustomerID=CustomerTable.CustomerID;
执行以上SQL语句,得到的查询结果如下:
OrderNo OrderDate CustomerName Country City PostalCode
-------------- ---------- ------------ ---------- -------------- ----------------
20180101001 2018-01-01 Jane Smith USA San Francisco 94105
20180101002 2018-01-01 Mike Brown USA Los Angeles 90001
20180102001 2018-01-02 John Doe USA New York 10001
20180102002 2018-01-02 NULL NULL NULL NULL
20180103001 2018-01-03 Lisa Jones USA Las Vegas 89101
通过以上查询结果可以看出,查询出了OrderTable中所有的订单信息,并且对每个订单的客户信息进行了查询。如果该订单没有对应的客户信息,则在查询结果中使用了NULL值进行了填充。
总结
通过以上实例,我们可以看出,在SQLServer中实现左链接的方式非常简单,只要使用LEFT JOIN关键字进行左链接即可,并且可以使用ON语句指定两张表之间的匹配条件。左链接可以将表1中的所有数据查询并返回,同时只对表1中与表2匹配的数据中决定是否查询和添加,不匹配则将返回null值,因此可以用于查询关联性不强的两张表中的数据。