sélectionnez les valeurs que le fait d'avoir le maximum d'horodatage
J'ai une table:
id|val|updated
1 | 31|2012-01-12
1 | 34|2012-01-15
2 | 41|2012-01-15
3 | 44|2012-01-15
4 | 66|2012-01-01
Et j'ai besoin de sélectionner l'id et le val avec le maximum de valeur de mise à jour.
Donc pour cette table résultat devrait être:
1| 34| 2012-01-15
2| 41| 2012-01-15
3| 44| 2012-01-15
4| 66| 2012-01-01
OriginalL'auteur errx | 2012-02-16
Vous devez vous connecter pour publier un commentaire.
Cela nécessite un
MAX()
total dans une sous-requête a rejoint à l'encontre de la table principale.GROUP BY id
pour quoi? Pourquoi c'est nécessaire?Le
GROUP BY
est à l'intérieur de la rejoint sous-requête, et il est nécessaire de mettre en corrélation la plus grandeupdated
valeur parid
. Cette valeur globale est ensuite rejoint retour à la table externe par le biais de laid
. SansGROUP BY
, la sous-requête serait de retourMAX(updated)
pour l'ensemble de la table.Je vois merci pour votre explication.
OriginalL'auteur Michael Berkowski
Un couple d'autres "portable" approches. Dans mon test rapide sur SQL SERVER 2008, Michael requête effectuée meilleur
OriginalL'auteur J Cooper
la réponse sélectionnée fonctionnent très bien, mais ici, c'est une solution plus rapide. Il n'utilise pas les jointures sont des groupes qui va ralentir la requête vers le bas. Celui-ci utilise des partitions qui sont beaucoup plus rapides que les groupes et les jointures. Check it out:
SQL
...OriginalL'auteur Luke101