Je dois mettre à jour une colonne dans une très très grande table. La performance est donc un gros problème.Mise à jour sur la ligne pour chaque groupe avec la valeur maximale dans l'autre colonne
La question est semblable à one, mais seulement pour Sybase Adaptive Server Enterprise (ASE 12.5.4) plus je dois faire une mise à jour sur les lignes récupérées. Y at-il un moyen de le faire sans une auto-adhésion comme dans la réponse la plus votée pour Oracle?
Ce fut la première tentative avec une jointure, mais il est par ordre de ralentir pour la table il est destiné à:
UPDATE table SET flag = 1
FROM table AS a1
LEFT OUTER JOIN table AS a2
ON (a1.groupId = a2.groupId AND a1.id < a2.id)
WHERE a2.groupId IS NULL
and a1.somename in ('x', 'y')
Je pense qu'il vous manque un nom de corrélation 'WHERE t2.groupId = t1.groupId' ou quelque chose? –
Hmmm. Je ne pensais pas en avoir besoin, mais tu as probablement raison; Je vais modifier en conséquence. –