首页 > SQL多个字字段分组

SQL多个字字段分组

SELECT *
FROM (SELECT *
      FROM dinginvestpack 
      WHERE packStatus = 2) d 
LEFT JOIN dingpackredeemlist sh ON d.dingInvestPackId = sh.dingInvestPackId 
LEFT JOIN dinguserpacksum ze ON ze.packRedeemId = sh.dingPackRedeemId 
GROUP BY d.dingInvestPackId,ze.packStatus,ze.requestNo

查询结果出来为什么ze.packStatus有为Null的,但是我原始表的这个字段却是没有为null的.都是0或3,难到它会自动把0转为Null吗,这个字段的数据类型是char.


select ze.packstatus from dingpackredeemlist as sh
left join dinguserpacksum as ze on ze.packRedeemId = sh.dingPackRedeemId
group by ze.packstatus

相信你执行这句的结果会发现肯定有一个 null 的行

给你模拟了个环境
http://sqlfiddle.com/#!9/616b6/5

是你 join 出了问题, 表 b 的某条数据在 a 中找不到.

另: 你的 group by 这种写法是错误的, 如果是标准的 sql 语句, 比如在 mssql 中
你或得到这样的错误信息:
选择列表中的列 'table.column' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。


评论框有 bug ... 不能评论 XD

实际上你的语句逻辑并没有错(当然如果是这个逻辑的话), 这不是写法问题, 当然除了那个 group by , 引发这个错误的原因是你的数据有问题, 你得去检查你的数据为何会导致错误, 语法可以不用去纠结了

【热门文章】
【热门文章】