如何提供重复的唯一号码?
我有一个表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