Ich habe mysql Tabelle der Kommentare, so.
%Vor%jetzt kann ich Kommentare von diesem und Benutzernamen von einer anderen Tabelle mit INNER JOIN Abfrage wie folgt holen.
Ich kann die Top 3 Kommentare erhalten ORDER BY comments.ratings DESC
%Vor%und
regelmäßige Kommentare erhalten ORDER BY comments.datetime DESC.
%Vor%was ich versuche zu tun ist, zeigen Benutzer die Top-3-Kommentare nach ihren Bewertungen zuerst und dann regelmäßige Kommentare Reihenfolge von comments.datetime DESC.
Nun, wie kann ich über zwei mysql-Abfragen in eins verbinden?
Wie die andere Antwort sagt - können Sie Ergebnisse kombinieren mit union
- was einfach bedeutet, zwei Ergebnisse zusammen zu verbinden. Beachten Sie jedoch, dass Sie union
nicht direkt mit diesen beiden Abfragen verknüpfen können, da sie order by
verwenden. Daher müssen wir sie in äußere Abfragen einschließen und eine Rankingvariable verwenden, um dies sicherzustellen rekonstruiere die Vereinigung in der Reihenfolge, die wir wollen:
union
ist standardmäßig distinct
, was bedeutet, dass Zeilen, die in beiden Ergebnismengen gefunden wurden, nicht dupliziert werden. Es gibt jedoch auch keine Garantie dafür, dass die Zeilen in der erwarteten Reihenfolge zurückgegeben werden Tabelle mit einem eigenen Wert tbl
und dann order by
dieses Feld.
Wenn Sie sicher waren, dass es keine Duplikate geben würde, könnten Sie die Dublettenprüfung mit union all
anstelle von union
Um Ihre Frage zu beantworten, können Sie Ihre Abfragen mit UNION
aber
Was ich versuche zu tun, ist Benutzern die Top 3 Kommentare von ihren zu zeigen Bewertungen zuerst und dann regelmäßige Kommentare nach Kommentaren DESC
Wenn Sie versuchen, etwas wie die Funktionalität der Kommentare von stackoverflow zu erreichen, wo die besten Kommentare (oder Kommentare mit upvotes) zuerst angezeigt werden, dann denke ich, dass separate Abfragen gut genug sind
Wenn Ihre Suchanfrage kombiniert wird, muss der Nutzer alle UNION
hat (basierend auf meiner Erfahrung, weil ich immer noch ein Noob beim Codieren bin)
Disclaimer: HARD, aber nicht unmöglich
Wenn ich derjenige bin, der dieses Problem programmiert, wird zuerst mein Programm die Top 3 Kommentare laden, danach gibt es einen 'Zeige mehr Kommentare' Knopf, der mit AJAX auf meinen Server schreibt und das Ergebnis anfügt ( regelmäßige Kommentare) zur Liste der angezeigten Kommentare. Damit müssen Abfragen getrennt von dem sein, was Sie jetzt haben