获取没有重复的其他字段的SQL查询

时间:2016-08-28 07:07:03

标签: mysql sql

你能帮我构建一个SQL查询吗?

例如我有这个表table

FK1 | FK2
 1  |  1
 1  |  2
 1  |  3
 1  |  4
 1  |  1 (duplicated ID)
 2  |  1
 2  |  2
 2  |  3
 2  |  5

我希望所有FK1行的FK2组都有不同的FK1 | COUNT(FK2) 1 | 4 // (Distinct ID : 1, 2, 3, 4) 1 | 1 // (Distinct ID : 1) 2 | 4 // (Distinct ID : 1, 2, 3, 5) 行数,例如:

Duration

在SQL中可以吗?也许使用嵌套查询,我不知道......

感谢您的回答(我希望)

菲尔

1 个答案:

答案 0 :(得分:0)

嗯。嗯。 。 。我认为这可能会做你想要的:

select fk1, rn, count(*)
from (select t.*,
             (@rn := if(@fk2 = fk2, @rn + 1,
                        if(@fk2 := fk2, 1, 1)
                       )
             ) as rn
      from t cross join
           (select @fk2 := -1, @rn := 0) params
      order by fk1, fk2
     ) t
group by fk1, rn;

至少,这会返回您指定的结果集。