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

Sélectionnez une colonne distincte avec d'autres colonnes dans MySQL

En utilisant une sous-requête, vous pouvez obtenir l'id le plus élevé pour chaque nom, puis sélectionnez le reste des lignes en fonction de cela :

SELECT * FROM table
WHERE id IN (
  SELECT MAX(id) FROM table GROUP BY name
)

Si vous préférez, utilisez MIN(id) pour obtenir le premier enregistrement de chaque nom au lieu du dernier.

Cela peut également être fait avec un INNER JOIN contre la sous-requête. Pour cela, les performances doivent être similaires, et parfois vous devez vous joindre sur deux colonnes de la sous-requête.

SELECT
  table.*
FROM 
  table
  INNER JOIN (
    SELECT MAX(id) AS id FROM table GROUP BY name
  ) maxid ON table.id = maxid.id