我已经做了这个查询,右连接两个表,但它显示不正确,它显示所有数据,没有来自 lin_doc 的空阵营,我做错了什么
我的查询:
select cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab, l.quantidade, (select sum(quantidade) from lin_doc l where l.id_cab_doc = cd.id) as qtd
from cab_doc cd RIGHT JOIN
lin_doc l on l.id_cab_doc = cd.id
where cd.id_tipo_doc = 1
输出
1 /13-12-88/ xxxx /01 /2000 /321
它应该看起来像这样:
1 /13-12-88/ xxx /321
null /null /null /01 /2000/ null
最佳答案
您的查询在列上有一个 WHERE 条件,由于 RIGHT JOIN,该列可能为 NULL。
这基本上将使其成为内部联接。将 WHERE 条件移至 JOIN 条件,事情应该按您的预期进行;
SELECT cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab,
l.quantidade,
(SELECT SUM(quantidade) FROM lin_doc l WHERE l.id_cab_doc = cd.id) AS qtd
FROM cab_doc cd
RIGHT JOIN lin_doc l
ON l.id_cab_doc = cd.id
AND cd.id_tipo_doc = 1
关于mysql - MySQL 中的右连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23601093/