left join 和 right join 是两种常见的 SQL JOIN 操作类型,它们之间的区别在于连接的方向和保留的数据。
left join(左连接)从左侧表(左表)中选取所有的记录,并关联右侧表(右表)中的匹配记录。如果左侧表中的记录没有匹配的右侧表记录,则右侧表中的关联列将包含 NULL 值。左连接保留左侧表中所有的数据,而右侧表中不匹配的数据将会被排除。
right join(右连接)与左连接相反,从右侧表(右表)中选取所有的记录,并关联左侧表(左表)中的匹配记录。如果右侧表中的记录没有匹配的左侧表记录,则左侧表中的关联列将包含 NULL 值。右连接保留右侧表中所有的数据,而左侧表中不匹配的数据将会被排除。
举个例子,假设有两个表 "customers" 和 "orders",其中 "customers" 表包含了所有客户的信息,"orders" 表包含了所有订单的信息。如果想要查找所有客户以及他们的订单信息,可以使用 left join 或 right join。
使用 left join,查询语句如下:
SELECT *
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id;
这个查询将返回所有客户的记录以及他们的订单记录。如果某个客户没有订单,则该客户的订单关联列将包含 NULL 值。
使用 right join,查询语句如下:
SELECT *
FROM customers
RIGHT JOIN orders
ON customers.id = orders.customer_id;
这个查询将返回所有订单记录以及它们所关联的客户记录。如果某个订单没有客户信息,则该订单的客户关联列将包含 NULL 值。
总之,left join 和 right join 是连接两个表的常见操作,它们之间的区别在于连接的方向和保留的数据。left join 保留左侧表的所有数据,right join 保留右侧表的所有数据。