mysql - MySQL 中的右连接

标签 mysql sql

我已经做了这个查询,右连接两个表,但它显示不正确,它显示所有数据,没有来自 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/

相关文章:

sql - 来自多个表的关联 SQL 连接查询

SQL CHECK 约束以防止日期重叠

sql - 在主键冲突错误后继续事务

java - 如果不存在记录,则设置事件以删除表

MySQL IF...SELECT 语句同时保留列标题

java - Hibernate 违反主键约束

php - 选择所有论坛并获得最新帖子......如何?

php - 从 MySQL 中检索自上次查询以来的差异数据

php - 使用 PHP 将 TXT 文件中的行插入 SQL 数据库

mysql - 汽车提交带有图像的表格