2010-10-23 4 views
3

Ceci est probablement quelque chose de très simple, si pardonnez mon moment blond :)Obtenir top enregistrements distincts dans MySQL

J'ai une table « album »

* albumId 
* albumOwnerId (who created) 
* albumCSD (create stamp date) 

Maintenant, ce que je suis en train de faire est de sélectionnez les 10 albums les plus récemment mis à jour. Mais, je ne veux pas que 10 albums de la même personne reviennent - je veux seulement un album par personne unique. I.E 10 albums de 10 personnes différentes. Donc, voici ce que j'ai ci-dessous, mais il ne fonctionne pas correctement et je n'arrive pas à comprendre pourquoi. Des idées?

Merci

SELECT DISTINCT(albumOwnerId), albumId 
FROM album 
ORDER BY albumCSD DESC 
LIMIT 0,10 

Voici quelques exemples de données, suivi par ce que je suis en train de faire. J'espère que cela le rend plus clair.

DONNÉES:

albumOwnerID, albumId, albumCSD 
18, 194, '2010-10-23 11:02:30' 
23, 193, '2010-10-22 11:39:59' 
22, 192, '2010-10-12 21:48:16' 
21, 181, '2010-10-12 20:34:11' 
21, 178, '2010-10-12 20:20:16' 
19, 168, '2010-10-12 18:31:55' 
18, 167, '2010-10-11 21:06:55' 
20, 166, '2010-10-11 21:01:47' 
18, 165, '2010-10-11 21:00:32' 
20, 164, '2010-10-11 20:50:06' 
17, 145, '2010-10-10 18:54:24' 
17, 144, '2010-10-10 18:49:28' 
17, 143, '2010-10-10 18:48:08' 
17, 142, '2010-10-10 18:46:54' 
16, 130, '2010-10-10 16:17:57' 
16, 129, '2010-10-10 16:17:26' 
16, 128, '2010-10-10 16:07:21' 
15, 119, '2010-10-10 15:24:28' 
15, 118, '2010-10-10 15:24:11' 
14, 100, '2010-10-09 18:22:49' 
14, 99, '2010-10-09 18:18:46' 
11, 98, '2010-10-09 15:50:13' 
11, 97, '2010-10-09 15:44:09' 
11, 96, '2010-10-09 15:42:28' 
11, 95, '2010-10-09 15:37:25' 

DONNÉES Souhaité:

18, 194, '2010-10-23 11:02:30' 
23, 193, '2010-10-22 11:39:59' 
22, 192, '2010-10-12 21:48:16' 
21, 181, '2010-10-12 20:34:11' 
19, 168, '2010-10-12 18:31:55' 
17, 145, '2010-10-10 18:54:24' 
16, 130, '2010-10-10 16:17:57' 
15, 119, '2010-10-10 15:24:28' 
14, 100, '2010-10-09 18:22:49' 
11, 98, '2010-10-09 15:50:13' 
+0

il est si longtemps par moi, mais ... vous avez expérimenté groupby albumownerid ?! – Tima

+0

vous avez oublié albumownerid 20, n'est-ce pas ?! – Tima

+0

@Mur Votema: Détendez-vous ... – BoltClock

Répondre

2

j'obtenir des résultats, vous voulez avoir, avec cette requête

SELECT albumOwnerID, albumId, albumCSD 
FROM album 
WHERE albumCSD in 
(SELECT Max(album.albumCSD) AS MaxvonalbumCSD 
FROM album 
GROUP BY album.albumOwnerID); 

Cependant, dans MS Access

+0

Salut Mur - Merci - cela fonctionne très bien dans MySQL et fourni le résultat requis! Juste besoin d'être commandé DESC, mais ce n'est rien. Merci beaucoup! – Cheeky

1
select albumOwnerID, albumID 
from album 
Group by albumOwnerID, albumID 
Order by albumcsd desc 
LIMIT 0,10 

EDIT:

select albumOwnerID, albumID 
from album 
where albumOwnerID in (select distinct albumOwnerID from album order by albumCSD) 
LIMIT 0,10 
+0

Salut Sachin. Cela n'a pas fonctionné. Il donne exactement le même résultat avec ou sans la clause group by. AlbumOwnerId n'est pas distinct. – Cheeky

+0

@Cheeky - L'albumID peut-il être différent pour le même propriétaire? Si oui, alors s'il vous plaît utiliser 'Group by albumOwnerID' et supprimer l'albumID du groupe par –

+0

C'est ce que j'ai essayé à l'origine mais est incorrect, car les albums de l'album retournent dans le mauvais ordre. – Cheeky

Questions connexes