i ont une table comme tellesql pour trouver le plus récent record dans un groupe
table_id | series_id | revision_id | year
------------------------------------------
1 | 1 | 1 | 2010
2 | 2 | 1 | 2009
3 | 2 | 2 | 2008
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
6 | 2 | 3 | 2008
7 | 3 | 2 | 2007
8 | 3 | 3 | 2010
9 | 3 | 3 | 2010
Je dois trouver le table_id pour le maximum (année) lorsqu'ils sont groupés par REVISION_ID lorsque les séries X = dans postgresql.
par exemple: lorsque x = 2 i attendre ce résultat
table_id | series_id | revision_id | year
------------------------------------------
2 | 2 | 1 | 2009
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
cela ne fonctionne pas
SELECT * from table
WHERE series_id = 2
AND table_id IN (
SELECT table_id
FROM table
WHERE series_id = 2
GROUP by revision
ORDER BY year DESC
)
Je ne peux pas trouver un moyen de le faire dans postgresql depuis que je dois retourner un champ je ne suis pas le regroupement par
voici quelques problèmes similaires dans d'autres arômes SQL.
MySQL SQL Query, Selecting 5 most recent in each group
SQL SERVER SQL Server - How to select the most recent record per user?
Et les solutions à ces problèmes ne fonctionnent pas ...? – OrangeDog
mysql vous permet de sélectionner un champ qui n'est pas dans le groupe par, ce qui n'est pas autorisé dans postgres. Le TOP1 du serveur SQL n'est pas non plus supporté. –
À moins que vous ne choisissiez en quelque sorte que l'enregistrement supérieur, je ne recommande pas de commander par quelque chose dans une sous-requête, car le tri est rejeté immédiatement après (par le standard SQL). –