mySql查询显示奇怪的信息

时间:2014-05-12 19:51:53

标签: mysql

所以我有这个我的sql查询,但它并没有完全正常工作,它显示在shringnt出现的开头空值,并重复一些行,我想要我做错了什么:

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

输出:

descricao id_estab quantidade QTD

NULL 12 362.000 NULL

NULL 19 452.000 NULL

NULL 14 154.000 NULL

NULL 05 492.000 NULL

Outras Campanhas 03 229.000 3971.000

Outras Campanhas 05 215.000 4388.000

NULL 06 162.000 NULL

NULL 17 22.000 NULL

NULL 34 39.000 NULL

NULL 13 63.000 NULL

NULL 28 162.000 NULL

NULL 29 43.000 NULL

NULL 03 190.000 NULL

Outras Campanhas 33 71.000 3971.000

NULL 02 13.000 NULL

NULL 08 170.000 NULL

NULL 06 409.000 NULL

所需的输出:

descricao id_estab quantidade QTD

Outras Campanhas 05 215.000 4388.000

NULL 06 162.000 NULL

NULL 17 22.000 NULL

NULL 34 39.000 NULL

NULL 13 63.000 NULL

NULL 28 162.000 NULL

NULL 29 43.000 NULL

NULL 03 190.000 NULL

Outras Campanhas 33 71.000 3971.000

NULL 02 13.000 NULL

NULL 08 170.000 NULL

NULL 06 409.000 NULL

1 个答案:

答案 0 :(得分:0)

首先我要说的是,当你可以在同一个查询中得到总和时,不需要做相关的子查询

SELECT cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab, 
   l.quantidade, 
   COALESCE(SUM(l.quantidade) )AS qtd 
FROM cab_doc cd 
RIGHT JOIN lin_doc l 
ON l.id_cab_doc = cd.id 
AND cd.id_tipo_doc = 1
GROUP BY cd.id 

对于null结果,您可以使用COALESCE(),因为您没有显示表定义所以我使用了GROUP BY cd.id