Ce n'est pas un double pour autant que je sache, car les autres ont tous des dates différentes. À titre d'exemple, j'ai le tableau suivant de la société, du compteur et de la dernière date de révision:

Company    MeterCode  Name  LastDate
A          1          MeA   1/1/20
A          2          MeB   1/1/20
A          3          MeC   1/2/20
A          4          MeD   1/2/20

B          1          MeE   2/1/20
B          2          MeF   2/1/20
B          3          MeG   2/2/20
B          4          MeH   2/2/20

Comment interroger cette table pour obtenir 1 ligne par entreprise renvoyant toutes les colonnes mais avec la date la plus récente? Plusieurs compteurs peuvent avoir la même date de dernière révision que vous voyez, mais je me fiche du compteur avec lequel je me retrouve tant qu'il s'agit de la date la plus récente. Dans l'exemple ci-dessus, je voudrais finir avec quelque chose comme:

Company    MeterCode  Name  LastDate
A          4          MeD   1/2/20
B          4          MeH   2/2/20
0
Lifz 21 avril 2020 à 02:19

2 réponses

Meilleure réponse

Pour les versions MySql antérieures à 8.0+, vous pouvez utiliser une sous-requête corrélée dans la clause WHERE:

select t.* from tablename t
where t.metercode = (
  select metercode from tablename
  where company = t.company
  order by lastdate desc, metercode desc limit 1
) 

Voir la démo.
Résultats:

| Company | MeterCode | Name | LastDate  |
| ------- | --------- | ---- | ----------|
| A       | 4         | MeD  | 01/02/20  |
| B       | 4         | MeH  | 02/02/20  |
1
forpas 21 avril 2020 à 00:07