J'ai une table CSBCA1_5_FPCIC_2012_EES207201222743
, ayant deux colonnes employee_id
et employee_name
J'ai utilisé la requête suivante
SELECT ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID) AS ID, EMPLOYEE_ID,EMPLOYEE_NAME
FROM CSBCA1_5_FPCIC_2012_EES207201222743
Mais, il renvoie les lignes dans l'ordre croissant de employee_id
, mais j'ai besoin des lignes dans l'ordre où elles ont été insérées dans le tableau.
SQL Server ne suit pas l'ordre des lignes insérées, il n'existe donc aucun moyen fiable d'obtenir ces informations compte tenu de la structure de votre table actuelle. Même si employee_id
Est une colonne IDENTITY
, il n'est pas infaillible à 100% de s'appuyer sur celle-ci pour l'ordre d'insertion (puisque vous pouvez combler les lacunes et même créer des valeurs d'identification en double à l'aide de SET IDENTITY_INSERT ON
). Si employee_id
Est une colonne IDENTITY
et vous êtes sûr que les lignes ne sont pas insérées manuellement dans le désordre, vous devriez pouvoir utiliser cette variation de votre requête pour sélectionnez les données dans l'ordre, le plus récent en premier:
SELECT
ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID DESC) AS ID,
EMPLOYEE_ID,
EMPLOYEE_NAME
FROM dbo.CSBCA1_5_FPCIC_2012_EES207201222743
ORDER BY ID;
Vous pouvez modifier votre tableau pour suivre ces informations pour les nouvelles lignes, mais vous ne pourrez pas les dériver pour vos données existantes (elles seront toutes marquées comme insérées au moment où vous effectuez cette modification).
ALTER TABLE dbo.CSBCA1_5_FPCIC_2012_EES207201222743
-- wow, who named this?
ADD CreatedDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
Notez que cela peut casser le code existant qui ne fait que INSERT INTO dbo.whatever SELECT/VALUES()
- par exemple vous devrez peut-être revoir votre code et définir une liste de colonnes explicite appropriée.
Il existe une pseudocolonne appelée %% physloc %% qui indique l'adresse physique de la ligne.
SQL ne fait pas cela. L'ordre des tuples dans le tableau n'est pas classé par date d'insertion. Beaucoup de gens incluent une colonne qui stocke cette date d'insertion afin de contourner ce problème.