Je le tableau suivant:Sélectionnez les 3 derniers enregistrements où les valeurs d'une colonne sont distinctes
id time text otheridentifier
-------------------------------------------
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2
Ce que je veux faire est de sélectionner les 3 derniers enregistrements (par le temps desc), dont otheridentifier
s sont distincts. Donc, dans ce cas, le résultat serait id
« s: 5, 4 et 2.
id
= 3 serait sautée parce qu'il ya un dossier plus récent avec le même domaine otheridentifier
.
Voici ce que j'essayé de faire:
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3
Cependant, je finis par obtenir des lignes de id
= 5, et au lieu de 5, 4, 2 comme prévu. Est-ce que quelqu'un peut me dire pourquoi cette requête ne retournerait pas ce que je m'attendais? J'ai essayé de changer le ORDER BY en ASC mais cela réorganise simplement les lignes retournées à 1, 3, 5.
je me suis rappelé le temps que je passais des heures à fixer comme ça et sql tourne sur MySQL 4.0 ne prend pas en charge les requêtes imbriquées; p – Unreality
@Unreality: Fortu La plupart des solutions impliquant des sous-requêtes peuvent être exprimées en tant que jointures si nécessaire. :) – Rytmis
Oui, mais ceux avec ORDER/LIMIT sont _not_ facilement exprimés par JOIN ... –