Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :Comment conserver l'ordre des lignes avec DISTINCT ?

le distinct mot clé fait ce qu'il est censé faire, renvoie une ligne chacune avec une valeur de colonne donnée. Distinct ne vous permet pas de spécifier quel cette ligne sera renvoyée, et il ressort clairement de la requête d'origine qu'un tel tri est autorisé (il y a une ligne avec l'identifiant 443 qui suit une ligne avec l'identifiant 429).

Pour contrôler les lignes qui seront renvoyées, vous devez reformuler la requête. Une solution typique que je prendrai est d'utiliser un group by , en sélectionnant la colonne de groupe et la ligne souhaitée de chaque groupe, quelque chose à l'effet de

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Si j'ai besoin d'en faire plus, j'utiliserai ce type de requête comme sous-sélection dans une requête plus large, en me joignant éventuellement au champ id pour obtenir plus de champs à partir de la ligne préférée, ou en ordonnant la requête d'une manière particulière.