如何提供重复的唯一号码?

我有一个表IDS这样如何提供重复的唯一号码?

52 

52

53

54

54

54

55

我需要找到复制并更新他们这样

52 1 

52 2

53 1

54 1

54 2

54 3

55 1

此查询

SELECT klient_id, 

(

SELECT COUNT(klient_id)

FROM vClient_priklucok

WHERE klient_id = data.klient_id

) AS count

FROM vClient_priklucok AS data

回报这样

数据

52 2 

52 2

53 1

54 3

54 3

54 3

55 1

在此先感谢

回答:

SELECT id,   

@rownum := case when @prevId <> id then 1 else @rownum + 1 end as rownumber,

@prevId := id

FROM your_table

CROSS JOIN (SELECT @rownum := 0, @prevId := 0) r

ORDER BY id ASC

回答:

在MySQL中,您可以使用变量进行此操作。但是,你需要非常小心。变量只能在一个表达式中引用。

此外,当您使用变量时,最新版本的MySQL需要子查询来排序数据。所以,我建议:

select t.id, 

(@rn := if(@i = id, @rn + 1,

if(@i := id, 1, 1)

)

) as counter

from (select t.*

from t

order by t.id

) t cross join

(select @rn := 0, @i := -1) params;

由于documentation解释说:

在下面的语句,你可能会认为,MySQL将首先评估 @a,然后做一个分配第二:

SELECT @a, @a:[email protected]+1, ...; 

但是,涉及用户 变量的表达式的评估顺序未定义。

以上是 如何提供重复的唯一号码? 的全部内容, 来源链接: utcz.com/qa/265696.html

回到顶部