Je dois supprimer les lignes 475 à 948, car elles sont des doublons des lignes 1-474. Je présume que ce serait quelque chose de proche, ou y at-il autre chose?
DELETE FROM dbo.industry WHERE row_number between 475 and 948
Ce n'est pas vraiment une réponse. Il y avait quelques problèmes avec les données qui ont rendu les réponses ci-dessus (bien qu'excellentes) indépendantes J'ai simplement supprimé le tableau, puis l'ai réimporté de largeur fixe. Cette fois, j'ai été plus prudent et je n'ai pas eu le double emploi.
Peut-être qu'il est trop tard, mais je le fais habituellement
; with cte(rownum)as(
select row_number () over(partition by [Col1], [Col2] order by Col3) from [table]
)
delete from cte where rownum > 1
DELETE FROM dbo.industry
WHERE COLUMN_NAME IN -- Choose a column name
(SELECT TOP 1000
COLUMN_NAME, -- Choose a column name
ROW_NUMBER() OVER( ORDER by COLUMN_NAME ASC) AS Row_Number
FROM dbo.industry
WHERE Row_Number BETWEEN 475 AND 948 )
COLUMN_NAME peut être n'importe quel nom de colonne de votre table.
DELETE FROM dbo.industry WHERE dbo.industry.
REPLACE WITH PK COLUMN NAME| IN (SELECT TOP 948 dbo.industry
REPLACE WITH PK COLUMN NAME| FROM dbo.industry WHERE dbo.industry
REPLACE WITH PK COLUMN NAME| > 475 ORDER BY dbo.industry
REPLACE WITH PK COLUMN NAME|)
SELECT DISTINCT *
INTO #Temp
FROM dbo.industry
DELETE FROM dbo.industry
INSERT INTO dbo.industry
SELECT *
FROM #Temp