Comment définir le champ d'une table à autonumber en utilisant une requête en SQL

Nous avons une database qui utilise les numéros de security sociale comme ID unique, et j'espérais être en mesure de le changer afin qu'il puisse afficher un ID unique sans countr sur le SSN. Certaines tables ne sont pas complètement cohérentes quand j'ai jeté un oeil.

La seule solution que je peux penser est que je peux connecter les tables par ssn, mais j'ai un identifiant unique autonumber pour join le ssn … donc je peux afficher le numéro automatique au lieu du ssn.

Pour une illustration plus facile:

Table 1: + ------ + --------- + | SSN | FirstName | + ------ + --------- + | 111111 | Jeff | | 123456 | Kevin | | 654321 | Mark | | 555555 | David | + ------ + --------- + Table 2: + ------ + ---------- + | SSN | Address | + ------ + ---------- + | 111111 | California | | 123456 | Texas | | 654321 | Arizona | + ------ + ---------- + FakeIDTable: + --- + -- + | SSN | ID | + --- + -- + 

Cette requête:

 SELECT Table1.FirstName, Table2.Address, FakeIDTable.ID FROM (Table1 INNER JOIN Table2 ON Table1.SSN = Table2.SSN) LEFT JOIN FakeIDTable ON Table1.SSN = FakeIDTable.SSN; 

Donne ce résultat:

 + --------- + ---------- + -- + | FirstName | Address | ID | + --------- + ---------- + -- + | Jeff | California | | | Kevin | Texas | | | Mark | Arizona | | + --------- + ---------- + -- | 

Est-il possible de remplir FakeIDTable.ID avec un autonumber en utilisant Sql?

 Update Query1 Set Query1.ID = (autonumber) 

ou quelque chose de similaire?

Vous pouvez append une colonne avec la propriété identity() à la table où ssn est unique pour cette table et contient tous les ssn référencés, ou créer une table ssn uniquement les ssn uniques et un id ou un nombre de lignes utilisant row_number() :

Ajouter une colonne d' identity à une table existante qui n'a pas de colonne d' identity :

 alter table t add Id int not null identity(1,1); 

Créer une fausse table avec une colonne d' identity :

 create table faketable ( id int not null identity(1,1) primary key , ssn int not null unique ); insert into faketable (ssn) select distinct ssn from t; 

Mise à jour d'un ID de non-identité en utilisant row_number() utilisant une expression de table commune :

 ;with cte as ( select * , rn = row_number() over (order by ssn) from t ) update cte set Id = rn; 

Mise à jour d'un ID de non-identité en utilisant row_number() dans une sous-requête:

 update sub set Id = rn from ( select * , rn = row_number() over (order by ssn) from t ) as sub 

rextester demo: http://rextester.com/TDDA51123