Heim > Backend-Entwicklung > PHP-Tutorial > Hilfe: Wie findet MySQL Ergebnisse basierend auf der angegebenen ID-Reihenfolge?

Hilfe: Wie findet MySQL Ergebnisse basierend auf der angegebenen ID-Reihenfolge?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-10-10 11:56:23
Original
1223 Leute haben es durchsucht

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

begonnen
<code>SELECT *
FROM post
WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

begonnen
<code>SELECT *
FROM post
WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Kann Java als Backend des Webs verwendet werden?
Aus 1970-01-01 08:00:00
0
0
0
Installieren Sie JAVA
Aus 1970-01-01 08:00:00
0
0
0
Java kann nicht installiert werden
Aus 1970-01-01 08:00:00
0
0
0
Ist das in der Java-Sprache?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage