我正在尝试为每个附加到帐户的人生成唯一的引用。这在MySQL SELECT语句中。通常,由于我对个人和帐户都具有唯一的参考,因此我会将它们组合在一起。但是,我被限制在0到9999之间,因此我需要创建一个在帐户级别上唯一的参考。

我创建了以下内容:

    SELECT @n := @n + 1 n,
    ID,
    NAME
    FROM table1, (SELECT @n := 0) m
    ORDER BY ID,NAME


提供以下内容:

   1    1027000001  Mr a
   2    1027000001  Mr b
   3    1027000001  Mr c
   4    1062000001  Mr d
   5    1062000001  Mr e


但是我实际上想要的是:

   1    1027000001  Mr a
   2    1027000001  Mr b
   3    1027000001  Mr c
   1    1062000001  Mr d
   2    1062000001  Mr e


感谢您的任何帮助,您可以提供。

最佳答案

您已接近,但要使变量获得增量,您需要检查previous ID是否与current ID相同

select
r,ID,NAME from (
 select
 @rn:= if(@prev_id = ID, @rn+1,1) as r,
 ID,
 NAME,
 @prev_id:= ID
 from table1 , (select @rn:=0,@prev_id:= null)x
 order by ID
)x

关于mysql - 为人员创建唯一引用,但按帐户分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32737823/

10-11 22:38
查看更多