我现在有两个表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里很难看。有没有更好的写法?
添加回答
举报
0/150
提交
取消