【问题标题】:Modify Id attribute (key) of a record if the value already exists in the table如果值已存在于表中,则修改记录的 Id 属性(键)
【发布时间】:2013-11-19 14:30:47
【问题描述】:

我从外部来源获得了需要用于应用程序的数据。 但是,这些数据不是很干净。即,我有一个表 T,其中 T.id 在整个表中不是唯一的。但是,给定 2 行具有相同的 id,它们确实指的是不同的东西。因此,由于我不希望丢失数据,我试图为这些行提供不同的 id 值。

例如,假设我从表中的以下记录开始 (x1 : id, x2 : value):

(1,3) ; (2,5) ; (3,1) ; (1,2)

我想得到以下

(1,3) ; (2,5) ; (3,1) ; (4,2) 其中 4 = max(id) + 1

我不知道如何在 SQL 表上进行这种编程。有人可以帮忙吗?

最好的:)

【问题讨论】:

    标签: sql relational-database identifier dml


    【解决方案1】:

    您可以创建一个不同的表,其中包含一个 auto_increment 列作为 ID,并在该表中插入“value”的值。这会给他们唯一的ID。 (我在概括,因为我不知道您使用的是哪种风格的 sql)。

    CREATE table NEWTABLE (id <auto_incremented_column>, value <type>);
    
    INSERT INTO newTable(value)
    SELECT value FROM OLD_TABLE;
    

    例如在mysql中会是这样的:

    CREATE TABLE table2 (
      id INT auto_increment NOT NULL,
      value INT,
      PRIMARY KEY (id)
      );
    
    INSERT INTO table2 (value)
    SELECT value
    FROM table1;
    

    Example in MySql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 2010-11-26
      • 1970-01-01
      • 2019-06-19
      • 2019-04-11
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      相关资源
      最近更新 更多