Mysql根据特定列查询不同的计数

时间:2014-09-04 14:15:13

标签: mysql sql

我想要在不对元素进行分组的情况下找出特定列中项目的出现情况。这就是情况。

用户表:

UserID     :     Name
  1              User1
  2              User2

标签:

TagID      :     Tag 
  1              Tag1  
  2              Tag2  
  3              Tag3  

UserTags:

 UserID     :    TagID
    1             1
    1             2
    2             3

现在返回以下查询。

select ut.tagid
     ,t.tag,ut.userid
from tags t
inner join usertags ut on ut.tagID=t.tagid
order by userid

结果:

 TagID    :   Tag     :  UserID
   1          Tag1         1
   2          Tag2         1
   3          Tag3         2

哪个是对的。我只想在此结果集中再添加一列,以便它告诉我结果集中UserID的明确计数。所以我的结果集看起来像这样。

必填结果集:

 TagID    :   Tag     :  UserID  :  UserIDoccurrence
   1          Tag1         1             2
   2          Tag2         1             2
   3          Tag3         2             1

如你所见。由于userID = 1的用户有两个结果。我在2列中获得UserIDOccurrence,在UserID 2中获得了1。

1 个答案:

答案 0 :(得分:1)

有几种方法。这使用了相关的子查询:

select ut.tagid, t.tag, ut.userid,
       (select count(*) from usertags ut2 where ut2.userid = ut.userid) as totalcount
from tags t inner join
     usertags ut
     on ut.tagID = t.tagid
order by userid;