为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据这个需求编写mysql,保证简洁和效率

如何根据这个需求编写mysql,保证简洁和效率

至尊宝的传说 2018-10-29 09:09:07
我现在有两个表parent和child,根据parent.id等于child.parentId一对多关联。child表有一字段status,取值 0或1或2。现在我想要一起查询出每条parent的信息以及该条对应的child状态status分别为0、1、2的记录个数。这个个数我不知道怎么取,比如下面是取parent信息和状态为0的child个数,但只能取到一种情况,不能同时取到三种状态的个数。SELECT p. * , count ( * ) FROM parent p,child cWHERE c.parentid =p.idAND c.status= 0GROUP BY c.parentid;要同时取到三种状态就要继续加联表SELECT * FROM (SELECT p. * , count ( * ) c1 ,p.ID aidFROM parent p,child cWHERE c.parentid =p.idAND c.STATUS = 0GROUP BY c.parentid) a ,(SELECT count ( * ) c2 ,p.ID bidFROM parent p,child cWHERE c.parentid =p.idAND c.STATUS = 1GROUP BY c.parentid) b ,(SELECT count ( * ) c3 ,p.ID cidFROM parent p,child cWHERE c.parentid =p.idAND c.STATUS = 2GROUP BY c.parentid) cWHERE a.aid = b.bid AND c.cid = a.aid这样sql会很长且低效。并且现在只有三个状态,要是多了更长,后面会写在mybatis的xml里很难看。有没有更好的写法?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信