SQL连接查询
- 内连接
inner join
:获取两个表中字段匹配关系的记录(可以省略inner)。 - 左连接
left join
:获取左表所有记录,即使右表没有对应匹配的记录。 - 右连接
right join
:获取右表所有记录,即使左表没有对应匹配的记录
内连接
可以省略inner
内连接(INNER JOIN
)用于查询多张表中符合条件的记录,结果中仅包含所有关联表中符合条件的记录行。从所有参与连接的表中选择那些在连接条件下匹配的行,不符合条件的记录不会出现在结果中。例如:
SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id;
左/右连接
左连接(LEFT JOIN
或 LEFT OUTER JOIN
)用于查询多张表时,返回左表中的所有记录以及右表中符合连接条件的记录。如果右表没有匹配的记录,结果中对应的右表字段将返回 NULL
。假设有两个表:
Table_A
(包含id
和name
列)Table_B
(包含id
和age
列)
查询:
SELECT Table_A.name, Table_B.age
FROM Table_A
LEFT JOIN Table_B ON Table_A.id = Table_B.id;
结果说明:
- 这条语句将返回
Table_A
中的所有记录。 - 如果
Table_A
中的某个id
在Table_B
中找不到匹配,结果中的age
列将显示为NULL
。
使用场景:
左连接常用于需要保留左表所有数据的情况,即使右表没有匹配项。例如,获取所有用户及其可能的订单信息,即使某些用户没有下过订单。