这个查询COUNT是不可能的?

时间:2013-07-09 10:05:21

标签: mysql sql count

我面对非常困难的pb,我找不到实现这个目标的方法,我想要计算出有多少次出现等于member1(id1)的出现,如你所见, id2有4个相等的id1,而id3只有1个偶然的出现:

我的表测试是:

id   classement aptitude    A       B   C
1   2440          oui       2       9   1
2   2440          oui       2       9   5
3   1760          oui       1       8   5
4   2440          oui       2       9   1

在这个例子中,结果应该是:

id  count
4     5
2     4
3     1

什么样的查询可以实现它,是否可能?!

2 个答案:

答案 0 :(得分:2)

尝试:

select T2.id,
       coalesce((T1.classement=T2.classement),0)+
       coalesce((T1.aptitude=T2.aptitude),0)+
       coalesce((T1.A=T2.A),0)+
       coalesce((T1.B=T2.B),0)+
       coalesce((T1.C=T2.C),0) match_count
from Temp T1
cross join Temp T2
where T1.id = 1 and T2.id <> 1 
order by 2 desc

SQLFiddle here

答案 1 :(得分:-1)

这可能有效:

select a.id,
       length((case when a.aptitude = b.aptitude then '1' else '' end) ||
              (case when a.classement = b.classement then '1' else '' end) ||
              (case when a.A = b.A then '1' else '' end) ||
              (case when a.B = b.B then '1' else '' end) ||
              (case when a.C = b.C then '1' else '' end)) count
  from test a,
       (select *
          from test
         where id = 1) b
 where a.id != 1