【问题标题】:Duplicate ID in the database数据库中的重复 ID
【发布时间】:2020-09-11 06:49:37
【问题描述】:

我注意到在我的数据库中,一些用户有相同的ID 号码(这似乎是一个错误,没有检查id 号码是否已经被删除的用户占用)。

有数百对用户具有相同的ID 号码。

我想通过 SQL 更新(添加一个 0)到所有具有重复 ID 并被删除的用户。

我对 SQL 语言非常熟悉。 我找到了所有使用此查询的重复 ID 用户,但我不确定我应该如何继续。

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

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。您是否还有主键?示例数据和表定义会有所帮助。
  • 应该利用表的唯一键或主键约束的功能来阻止重复记录的可能性。

标签: sql database duplicates


【解决方案1】:

如果我理解正确,您有某种“已删除”标志。虽然我不确定“添加零”是解决您问题的最佳方法,但根据您的描述,标准 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 运算符。一些数据库有其他的字符串连接机制。

【讨论】:

    【解决方案2】:


    查询的是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
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2023-03-15
      • 2018-01-22
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多