left join排除nulls并取左值

时间:2016-05-13 16:04:16

标签: sql join null

SELECT p.ticket AS posted, 
       e.ticket AS settled, 
       Sum(e.amount) 
FROM   post AS p 
       LEFT JOIN settle AS e 
              ON p.ticket = e.ticket 
WHERE  p.date = '2016-05-10 00:00:00.000' 
GROUP  BY p.pticket, 
          e.eticket 
ORDER  BY posted 

我知道分组或哪里是罪魁祸首但是我尝试了很多变化,这两个表的行是:
(表1 =表2)
总计 =(项目+税收= 总计))

所以第二个表有2行,我总结。我需要日期,因为它有很多信息,我在日期和其他地方尝试过“is null”,但无法做到这一点。它显示左表的值,而不是null,就像它们匹配一样。

1 个答案:

答案 0 :(得分:0)

所以我想通了!只是喜欢这个网站,并希望为任何遇到这个的人留下输入,如果我的信息不准确,请纠正我,因为我想详细解释但基本上,根据我的理解和SQL基础知识,空值被认为是外行和因此我需要一个“左加入”:

   SELECT p.ticket AS posted, 
           e.ticket AS settled, 
           Sum(e.amount) 
   FROM   post AS p 
          LEFT JOIN settle AS e 
          ON p.ticket = e.ticket 
   WHERE  p.date = '2016-05-10 00:00:00.000' 
   GROUP  BY p.pticket, 
          e.eticket 
   ORDER  BY posted 

一个很好的规则,对我来说很有帮助,并帮助我检查我的空连接是Where子句应该只有表的条件,其中不包括空值,所以你保持外行,除了“is null”。您可以将它与非保留表上的列一起使用,但仍然可以获取空值。