数据库中的id重复

7kqas0il  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(421)

我注意到在我的数据库中,有些用户有相同的 ID 数字(这似乎是一个没有检查 id 已为已删除的用户获取号码)。
有数百对用户拥有相同的权限 ID 号码。
我想通过sql更新(添加一个0)到所有有重复的用户 ID 和被删除。
我非常熟悉sql语言。我发现所有使用此查询的重复id用户,但我不确定该如何继续。

SELECT ID, COUNT(*) As Num 
FROM Users
GROUP BY ID
HAVING COUNT(ID) >= 2
yks3o0rb

yks3o0rb1#

如果我理解正确的话,你有某种“isdelete”的标志。尽管我不确定“添加零”是解决问题的最佳方案,但根据您的描述,这方面的标准sql如下所示:

update t
    set id = id || '0'
    where isdeleted = 1 and
          exists (select 1 from t t2 where t2.id = t.id and t2.isdeleted = 0);

这是假设 isdeleted 是一个数字,带 0 为虚假和 1 是真的。 || 是字符串连接的标准sql运算符。有些数据库有其他的字符串连接机制。

cs7cruho

cs7cruho2#

查询是针对oracle的,不确定您使用的是什么数据库,

update users set id = id||0 where rowid not in 
(select max(rowid ) from users group by id)
--and flag = 'Deleted Flag'  -- uncomment the delete flag if you have in the table. If not just use same query a it is
;

相关问题