


Hilfe: Wie findet MySQL Ergebnisse basierend auf der angegebenen ID-Reihenfolge?
Oct 10, 2016 am 11:56 AM
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.
Antwortinhalt:
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

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

Wie analysiert und verarbeitet man HTML/XML in PHP?

Brechen oder aus Java 8 Stream foreach zurückkehren?

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge

Java leicht gemacht: Ein Leitfaden für Anfänger zur Programmierleistung

Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger
