1。实现需求
最近在成绩方面,有很多成绩和维度都涉及到
用户数量,如粉丝数达到50位,荣获世界知名称号,用户点赞100次,荣获荣誉大师称号等。
在user_relation表粉丝数
在user_praise表点的数量
根据过去的实践,如果我们需要
查询用户的数据,并且因为数据在不同的表中,所以我们
经常将多个SQL查询分开,例如:
select count(*)从哪里mysh user_relation other_uid = 123456;
select count(*)从哪里dzss user_praise praise_uid = 123456;
然后查询的数据封装在一个对象,返回给客户端或另做他用,如果你需要统计数据也可以少,但成就
系统中,经常有各种各样的成就,我们现在涉及12张彪,如果按照这个查询,然后写12个SQL查询12次,这让人有点不舒服。
两。你能用SQL语句实现它吗
答案是肯定的。
我们可以使用联合
操作,比如将多个表与表中的不同数据集成在一起的操作。
首先,您将使用联合重写上述语句:
选择wrzm,mysh,sgbh从(
select count(*)wrzm,0 mysh,0 sgbh从user_witness哪里plan_uid = 123456
联盟的所有
选择0 wrzm,计数(*)mysh,0 sgbh从user_relation哪里other_uid = 123456
联盟的所有
选择0 wrzm,0 mysh,计数(*)从哪里sgbh plan_stage UID = 123456和状态= 1
T);
根据上面的查询,结果如下:
mysql_count_results
我们
发现,这样的结果是一位体面的,如果你能把三行wrzm,mysh,和sgbh为表中的行,好的,所以我们可以很自然地想到使用金额(当然我不认为它在开始的时候,提醒我的朋友),所以我们把以上的SQL。
选择和wrzm(wrzm),和(mysh)mysh,和(sgbh)sgbh从(
select count(*)wrzm,0 mysh,0 sgbh从user_witness哪里plan_uid = 123456
联盟的所有
选择0 wrzm,计数(*)mysh,0 sgbh从user_relation哪里other_uid = 123456
联盟的所有
选择0 wrzm,0 mysh,计数(*)从哪里sgbh plan_stage UID = 123456和状态= 1
T);
结果如下:
mysql_count_result_2
在这一点上,我们得到了一个结果,我们希望在SQL语句中实现多个表的计数统计。
三,扩大
我们可以看到,我们所能得到的只是一个用户的数据,但是我们需要计数user_info所有用户。它也很简单。
选择
用户名,和wrzm(wrzm),和(mysh)mysh,和(sgbh)sgbh从(
选择plan_uid UID,计数(*)wrzm,0 mysh,0 sgbh从user_witness
集团通过plan_uid
联盟的所有
选择other_uid UID,0 wrzm,计数(*)mysh,0 sgbh从user_relation
集团通过other_uid
联盟的所有
选择wrzm UID,0,0 mysh,计数(*)从哪里sgbh plan_stage状态= 1
集团通过UID
T组的UID);
查询结果如下:
mysql_count_results_3
在这个结果中,如果我们需要查看特定的用户,然后将其添加到结尾。
在UID = 123456,如果你想
解决它,然后再通过直接的
命令。
总结
以上就是本文的全部内容。我希望在您使用或
学习MySQL时,本文的内容可以帮助您,如果您有任何问题,可以留言。