J'ai une table utilisateur comme celui-ciSQL: obtenir Nième élément dans chaque groupe
user_id | community_id | registration_date
--------------------------------------------
1 | 1 | 2008-01-01
2 | 1 | 2008-05-01
3 | 2 | 2008-01-28
4 | 2 | 2008-07-22
5 | 3 | 2008-01-11
Pour chaque communauté, je voudrais obtenir le temps que le 3e utilisateur enregistré. Je peux facilement le faire pour une seule communauté en utilisant l'extension SQL 'limite' de MySql. Par exemple, pour la communauté avec ID = 2
select registration_date
from user
order by registration_date
where community_id = 2
limit 2, 1
Sinon, je peux obtenir la date à laquelle le premier utilisateur enregistré pour toutes les communautés via:
select community_id, min(registration_date)
from user
group by 1
Mais je ne peux pas comprendre comment obtenir la date d'enregistrement du 3ème utilisateur pour toutes les communautés dans une instruction SQL unique.
Cheers, Don
Cela ne fonctionne pas car la sélection interne peut renvoyer plusieurs valeurs. La version de MySql que j'utilise ne permet pas d'utiliser LIMIT dans un select interne, donc je ne peux pas simplement remplacer le "=" par un "IN" –
Ah, oui, les anciennes versions de MySQL peuvent être un douleur à travailler avec. Je ne suis pas sûr de ce que vous pouvez faire si vous ne pouvez pas limiter la sélection interne. –
Vous devez probablement le diviser en plusieurs instructions en raison des limitations de votre version. –