You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将关联不同字段的两条LEFT JOIN SQL查询合并为单条语句?

合并两次LEFT JOIN查询为单条SQL语句

你完全可以将这两条查询合并为一条语句,下面提供两种常用实现方式:

方法一:两次LEFT JOIN(别名区分表)

通过给Contagens表设置不同别名,分别基于EANU和EANP关联,直接获取两个字段的值:

SELECT 
  Produto.NAME,
  IFNULL(c1.QTD, 0) AS QTD,
  IFNULL(c2.QTD, 0) AS ARM
FROM Produto
LEFT OUTER JOIN Contagens c1 ON Produto.EANU = c1.PRODUTO
LEFT OUTER JOIN Contagens c2 ON Produto.EANP = c2.PRODUTO
ORDER BY Produto.NAME;

这种方式逻辑清晰,适合每个关联条件对应唯一匹配行的场景,避免重复数据问题。

方法二:条件聚合(处理多匹配行场景)

如果Contagens表中同一个商品可能有多条匹配记录,可通过条件聚合合并结果:

SELECT 
  Produto.NAME,
  IFNULL(SUM(CASE WHEN Produto.EANU = Contagens.PRODUTO THEN Contagens.QTD ELSE 0 END), 0) AS QTD,
  IFNULL(SUM(CASE WHEN Produto.EANP = Contagens.PRODUTO THEN Contagens.QTD ELSE 0 END), 0) AS ARM
FROM Produto
LEFT OUTER JOIN Contagens 
  ON Produto.EANU = Contagens.PRODUTO OR Produto.EANP = Contagens.PRODUTO
GROUP BY Produto.NAME
ORDER BY Produto.NAME;

通过CASE WHEN筛选对应关联条件的QTD值,用SUM聚合后再处理空值,确保每个商品只返回一行结果。

内容的提问来源于stack exchange,提问作者Rafael Sousa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:36:12