📅  最后修改于: 2023-12-03 15:35:28.497000             🧑  作者: Mango
在SQL中,UNION ALL和LEFT JOIN是常用的两个操作,可以帮助我们从多个表中获取所需的数据。这篇文章将介绍如何使用UNION ALL和LEFT JOIN来联合多个表。
UNION ALL操作可以将两个或多个SELECT语句的结果集联合起来,生成一个包含所有行的结果集。需要注意的是,UNION ALL会包括所有的重复行,而不会进行去重操作。
UNION ALL的语法如下:
SELECT column1, column2, ... FROM table1
UNION ALL
SELECT column1, column2, ... FROM table2
例如,假设我们有两张表sales1和sales2,其中包含了每个销售员每天的销售数据。我们可以将这两张表联合起来,生成一个包含所有销售数据的表格,代码如下:
SELECT * FROM sales1
UNION ALL
SELECT * FROM sales2
LEFT JOIN操作可以将左表的所有行和右表中匹配的行联合起来,如果右表中没有匹配的行,则生成空值。LEFT JOIN常常用于查询左表中的所有数据,以及右表中与左表匹配的数据。
LEFT JOIN的语法如下:
SELECT column1, column2, ... FROM table1
LEFT JOIN table2 ON table1.column = table2.column
例如,假设我们有一张顾客表customer,还有一张订单表orders,我们可以使用LEFT JOIN将两者联合起来,以便查询所有顾客及其订单信息,代码如下:
SELECT * FROM customer
LEFT JOIN orders ON customer.customer_id = orders.customer_id
我们可以使用UNION ALL和LEFT JOIN联合多个表,以便查询出所有数据。例如,假设我们有三张表sales1、sales2和sales3,分别包含去年、今年上半年、今年下半年的销售数据。我们可以使用LEFT JOIN将所有表联合起来,代码如下:
SELECT * FROM sales1
LEFT JOIN sales2 ON sales1.salesperson = sales2.salesperson
LEFT JOIN sales3 ON sales1.salesperson = sales3.salesperson
UNION ALL
SELECT * FROM sales2
LEFT JOIN sales1 ON sales2.salesperson = sales1.salesperson
LEFT JOIN sales3 ON sales2.salesperson = sales3.salesperson
UNION ALL
SELECT * FROM sales3
LEFT JOIN sales1 ON sales3.salesperson = sales1.salesperson
LEFT JOIN sales2 ON sales3.salesperson = sales2.salesperson
这样,我们就可以查询出所有销售人员的所有销售数据了。
总之,UNION ALL和LEFT JOIN是SQL中非常常用的操作,我们可以使用它们来联合多个表,以便查询出所需的数据。