458 votes

Comment puis-je mettre à jour top 100 enregistrements dans sql server

Je veux mettre à jour le Top 100 des enregistrements dans sql server . J'ai une table T1 avec des champs de F1 et de F2. T1 a 200 dossiers. Je veux mettre à jour champ de F1 des 100 meilleurs enregistrements. Comment puis-je mettre à jour dans sql server.

Merci

764voto

Umair Ahmed Points 4020

Remarque, les parenthèses sont nécessaires pour mettre à JOUR les énoncés:

update top (100) table1 set field1 = 1

326voto

Martin Smith Points 174101

Sans un ORDER BY l'ensemble de l'idée d' TOP n'a pas beaucoup de sens. Vous avez besoin d'avoir une définition cohérente de la direction qui est "en haut" et qui est "en bas" pour le concept de haut, pour être significatif.

Néanmoins SQL Server permet à elle, mais ne garantit pas un résultat déterministe.

L' UPDATE TOP de la syntaxe dans l'acceptation de réponse ne prend pas en charge un ORDER BY de la clause, mais il est possible d'obtenir déterministe de la sémantique à l'aide d'un CTE ou dérivée, tableau de définir l'ordre de tri désiré ci-dessous.

;WITH CTE AS 
( 
SELECT TOP 100 * 
FROM T1 
ORDER BY F2 
) 
UPDATE CTE SET F1='foo'

19voto

hyyxing Points 71
update tb set  f1=1 where id in (select top 100 id from tb where f1=0)

18voto

Claudio B Points 46

pour ceux qui comme moi toujours coincé avec SQL Server 2000, SET ROWCOUNT {number}; peut être utilisée avant l' UPDATE de la requête

SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;

limite la mise à jour de 100 lignes

Il a été déconseillé au moins depuis SQL 2005, mais aussi de SQL 2012, il fonctionne encore

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X