Heim >Backend-Entwicklung >PHP-Tutorial >Hilfe: Wie findet MySQL Ergebnisse basierend auf der angegebenen ID-Reihenfolge?
Liebe Meister, jetzt bin ich auf ein Problem gestoßen und brauche eure Hilfe.
Es gibt die folgenden zwei Tabellen
Beitragstabelle: Artikeltabelle.
Aufzeichnungstabelle: Aufzeichnungstabelle, die zum Aufzeichnen der Lesereihenfolge des Benutzers verwendet wird.
Die Datensatztabelle verwendet ein Feld postid, um die Primärschlüssel-ID der Beitragstabelle entsprechend der Reihenfolge aufzuzeichnen, in der der Benutzer Artikel liest, dh der Fremdschlüssel von record.postid ist post.id.
Jetzt müssen wir die Artikel in der Post-Tabelle basierend auf der Post-ID in der Datensatztabelle finden. (Angenommen, die Lesereihenfolge lautet: „Artikel 1, Artikel 2, Artikel 2, Artikel 3, Artikel 3“ erlaubt wiederholte Artikel.)
Ich habe mit
<code>SELECT * FROM post WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>
In den Suchergebnissen können nur Artikel mit postid1, postid2, postid3 gefunden werden.
Die Geschäftslogik, die wir jetzt wollen, ist:
1: Artikel in der Beitragstabelle basierend auf den Lesedatensätzen des Benutzers finden.
2: Vervielfältigung ist erlaubt.
Zum Beispiel lautet die Lesereihenfolge der vom Benutzer gelesenen Artikel: „Artikel 1, Artikel 2, Artikel 2, Artikel 3, Artikel 3“, und das Ergebnis der Suche in der Beitragstabelle lautet: post.id1, post.id2, post.id2, post.id2,post.id3.
Hinweis: Erwägen Sie die Verwendung einer FOR-Schleife
<code> for (.....){ ... 变量 数组x; 数组x添加 SELECT * FROM post WHERE id = postidx; .... }</code>
Aber ich mache mir Sorgen um die Effizienz.
Liebe Meister, jetzt bin ich auf ein Problem gestoßen und brauche eure Hilfe.
Es gibt die folgenden zwei Tabellen
Beitragstabelle: Artikeltabelle.
Aufzeichnungstabelle: Aufzeichnungstabelle, die zum Aufzeichnen der Lesereihenfolge des Benutzers verwendet wird.
Die Datensatztabelle verwendet ein Feld postid, um die Primärschlüssel-ID der Beitragstabelle entsprechend der Reihenfolge aufzuzeichnen, in der der Benutzer Artikel liest, dh der Fremdschlüssel von record.postid ist post.id.
Jetzt müssen wir die Artikel in der Post-Tabelle basierend auf der Post-ID in der Datensatztabelle finden. (Angenommen, die Lesereihenfolge lautet: „Artikel 1, Artikel 2, Artikel 2, Artikel 3, Artikel 3“ erlaubt wiederholte Artikel.)
Ich habe mit
<code>SELECT * FROM post WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>
In den Suchergebnissen können nur Artikel mit postid1, postid2, postid3 gefunden werden.
Die Geschäftslogik, die wir jetzt wollen, ist:
1: Artikel in der Beitragstabelle basierend auf den Lesedatensätzen des Benutzers finden.
2: Vervielfältigung ist erlaubt.
Zum Beispiel lautet die Lesereihenfolge der vom Benutzer gelesenen Artikel: „Artikel 1, Artikel 2, Artikel 2, Artikel 3, Artikel 3“, und das Ergebnis der Suche in der Beitragstabelle lautet: post.id1, post.id2, post.id2, post.id2,post.id3.
Hinweis: Erwägen Sie die Verwendung einer FOR-Schleife
<code> for (.....){ ... 变量 数组x; 数组x添加 SELECT * FROM post WHERE id = postidx; .... }</code>
Aber ich mache mir Sorgen um die Effizienz.
SELECT P.*
FROM Post P
LEFT JOIN Record R ON R.PostID = P.ID
ORDER BY R.ID ASC
Die Datensatztabelle zeichnet die Lesereihenfolge auf, daher muss sie entsprechend der Reihenfolge der Datensatztabelle sortiert werden
kann eine Idee liefern: Verwenden Sie in, um Daten aus der Datenbank abzurufen, und verwenden Sie map, um eine entsprechende Beziehung zu map.put(postid, post) herzustellen. Nehmen Sie es dann in der Reihenfolge der IDs heraus und stellen Sie die erforderlichen Datentypen zusammen