Comment puis-je mettre à jour top 100 des lignes de DB2
Je sais que dans le standard SQL, vous pouvez le faire:
update top (100) table1 set field1 = 1
(référence: comment puis-je mettre à Jour top 100 des enregistrements dans sql server)
Mais ce n'est pas autorisé dans DB2. Quelqu'un peut-il me conseiller sur la manière d'accomplir le même résultat dans DB2? Merci!
TOP x
n'est pas dans le standard SQL, c'est une extension unique pour MS SQL Server (et probablement Sybase). FETCH FIRST x ROWS
a été introduit en SQL:2008
OriginalL'auteur Dave Shuck | 2012-06-12
Vous devez vous connecter pour publier un commentaire.
C'est dooable, bien que vous ne pouvez pas obtenir les résultats que vous attendez...
D'abord, rappelez-vous toujours que SQL est intrinsèquement non ordonnée. Cela signifie qu'il n'y est pas une telle chose le "haut" rangées, sauf si vous explicitement définir ce que vous entendez. Sinon, vos résultats sont "aléatoires" (sortof).
Peu importe, ce est dooable, en supposant que vous avez une sorte de clé unique sur la table:
Pourquoi pensez-vous que vous souhaitez mettre à jour de 100 lignes à la fois? Quel type de problème vous êtes vraiment essayer de résoudre?
J'ai trouvé qu'il peut être fait un peu moins avec beaucoup de détails:
UPDATE (SELECT table1Key FROM table1 WHERE field1 <> 1 ORDER BY field1 FETCH FIRST 100 ROWS ONLY) SET field1 = 1
OriginalL'auteur Clockwork-Muse
Pourriez-vous utiliser le
RRN
(si vous êtes concerné par la limitation du nombre de mises à jour)?par exemple:
OriginalL'auteur fisk