Ich kann nicht herausfinden, wie man innerhalb der Gruppe begrenzen kann, obwohl ich alle ähnlichen Fragen hier gelesen habe. PSQL doc Lesen nicht helfen entweder :(Betrachten Sie das folgende:.Wie führe ich LIMIT innerhalb der GROUP in derselben Tabelle?
CREATE TABLE article_relationship
(
article_from INT NOT NULL,
article_to INT NOT NULL,
score INT
);
Ich möchte pro gegebenem Artikel IDs nach Punkten sortiert, um eine Liste der Top-5 in Verbindung stehende Artikel bekommen
Hier ist, was ich versucht:
select DISTINCT o.article_from
from article_relationship o
join lateral (
select i.article_from, i.article_to, i.score from article_relationship i
order by score desc
limit 5
) p on p.article_from = o.article_from
where o.article_from IN (18329382, 61913904, 66538293, 66540477, 66496909)
order by o.article_from;
Und es gibt nichts zurück. ich unter Eindruck war, dass äußere Abfrage wie Schleife ist also denke ich, ich brauche nur Quell-IDs gibt.
auch was, wenn ich möchte aufbeitretenTabelle wo gibt es Spalten id
und title
und Titel der verwandten Artikel in Resultset erhalten?
Ich habe in innere Join-Abfrage:
select o.id, p.*
from articles o
join lateral (
select a.title, i.article_from, i.article_to, i.score
from article_relationship i
INNER JOIN articles a on a.id = i.article_to
where i.article_from = o.id
order by score desc
limit 5
) p on true
where o.id IN (18329382, 61913904, 66538293, 66540477, 66496909)
order by o.id;
Aber es machte es sehr, sehr langsam.
meinem vorherigen Kommentar kratzen, vollständig die Abfrage – JanR
falsch verstanden --- Also Sie wollen die ersten 5 Punkte insgesamt ---, warum auch nicht rechts/links beitreten? (weiß nicht, wie man Text lol) –
@SamuelJackson wegen der Sortierung nach Ergebnis innerhalb der Gruppe – expert