Sql 如果表中已存在值,则修改记录的Id属性(键)

Sql 如果表中已存在值,则修改记录的Id属性(键),sql,relational-database,identifier,dml,Sql,Relational Database,Identifier,Dml,我已经从外部来源获得了应用程序所需的数据。 然而,这些数据不是很干净。也就是说,我有一个表T,其中T.id在整个表中不是唯一的。但是,给定具有相同id的两行,它们确实引用了不同的内容。因此,由于我不希望丢失数据,我尝试为这些行提供不同的id值 例如,假设我从表中的以下记录开始(x1:id,x2:value): (1,3);(2,5) ; (3,1) ; (1,2) 我想得到以下信息 (1,3);(2,5) ; (3,1) ; (4,2)其中4=最大值(id)+1 我不知道如何在SQL表上进行这种

我已经从外部来源获得了应用程序所需的数据。 然而,这些数据不是很干净。也就是说,我有一个表T,其中T.id在整个表中不是唯一的。但是,给定具有相同id的两行,它们确实引用了不同的内容。因此,由于我不希望丢失数据,我尝试为这些行提供不同的id值

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

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

我想得到以下信息

(1,3);(2,5) ; (3,1) ; (4,2)其中4=最大值(id)+1

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


最佳:)

您可以创建一个不同的表,其中包含ID的自动增量列,并在该表中插入“value”的值。这将为他们提供唯一的id。(由于我不知道您使用的是哪种风格的sql,所以我正在进行概括)

CREATE table NEWTABLE (id <auto_incremented_column>, value <type>);

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

INSERT INTO table2 (value)
SELECT value
FROM table1;