当没有日期记录时,MYSQL查询返回0

时间:2012-12-28 01:21:41

标签: mysql left-join

我有这个问题:

Select
  X.type1transsum, Y.type2transsum,
  (X.type1transsum + Y.type2transsum),
  X.`date`
From (
  Select sum(trans) as type1transsum, `date`
  from type1trans where shopcode = 1037
  group by `date`
) X 
Left join (
  Select sum(trans) as type2transsum, `date`
  from type2trans where shopcode = 1037
  group by `date`
) Y on X.`date` = Y.`date` 

type2trans表包含每个日期的记录,而在type1trans中,某些天没有记录(因为那些日子没有交易)。

对于type1trans中没有记录的日期,则没有显示type2日期的记录,并且该日期的总数与type1相同,因为type1为null。如何让type1为日期返回null?

1 个答案:

答案 0 :(得分:1)

使用RIGHT JOIN代替LEFT JOIN(或者只是在查询中交换两个子选项)。

记住difference between left and right joins的一个有用规则是左连接包含 left 侧的每一行,即使右侧没有匹配的行,而右连接则相反,包括右侧侧的每一行。