电脑生活派
柔彩主题三 · 更轻盈的阅读体验

SQL查询两表合并:实用技巧轻松掌握

发布时间:2026-01-15 05:30:29 阅读:4 次

在日常工作中,处理数据是免不了的事。比如你在公司做销售分析,手头有两张表:一张是订单表 orders,记录每笔订单的金额;另一张是客户表 customers,存着客户的基本信息。现在你想查出每个客户的订单总额,这就得把两个表“合”起来查,也就是常说的 SQL 查询两表合并

用 JOIN 连接两张表

最常用的合并方式就是 JOIN。假设订单表里有个字段 customer_id 对应客户表的 id,你可以这样写:

SELECT c.name, o.amount 
FROM customers c 
JOIN orders o ON c.id = o.customer_id;

这条语句的意思是:从客户表和订单表中,找出客户 ID 相同的记录,把名字和订单金额一起显示出来。如果某个客户没下过单,那他不会出现在结果里,因为这是内连接(INNER JOIN)。

保留所有客户?用 LEFT JOIN

要是你希望哪怕没订单的客户也列出来,就把 JOIN 换成 LEFT JOIN

SELECT c.name, o.amount 
FROM customers c 
LEFT JOIN orders o ON c.id = o.customer_id;

这时候,所有客户都会出现,没订单的对应字段显示为 NULL。比如你做月度报表时要核对客户覆盖率,这种写法就特别有用。

合并结果去重?试试 UNION

有时候不是按关联字段拼表,而是想把两个结构相似的查询结果叠在一起。比如你有两个门店的销售记录表 sales_northsales_south,都包含 productquantity 字段,想汇总所有销量:

SELECT product, quantity FROM sales_north 
UNION ALL 
SELECT product, quantity FROM sales_south;

UNION ALL 会保留重复行,如果想去掉重复,可以用 UNION。这就像把两份 Excel 表格内容直接堆到一起,再统一处理。

注意字段匹配和性能

JOIN 的时候,别忘了确保关联字段类型一致。比如一个字段是整数,另一个是字符串,即使值一样也可能连不上。另外,大表连接容易慢,给 ON 后面的字段加索引能明显提速。就像快递分拣线,有编号才能快速配对包裹和收件人。

实际写查询时,可以先用 LIMIT 查几条看看结构对不对,确认无误再跑全量数据。小步快跑,比一口气执行完发现错了还得重来强得多。