Heim >Datenbank >MySQL-Tutorial >Wie kann die Unterabfrage-LIMIT-Einschränkung von MySQL mit dem IN-Operator umgangen werden?

Wie kann die Unterabfrage-LIMIT-Einschränkung von MySQL mit dem IN-Operator umgangen werden?

DDD
DDDOriginal
2024-12-14 03:13:14203Durchsuche

How to Work Around MySQL's Subquery LIMIT Restriction with IN Operator?

MySQL-Inkompatibilität mit Unterabfragebeschränkungen

Die Fehlermeldung „Diese Version von MySQL unterstützt 'LIMIT & IN/ALL/ANY' noch nicht /SOME subquery'“ gibt an, dass die verwendete MySQL-Version die Verwendung einer LIMIT-Klausel innerhalb einer Unterabfrage nicht unterstützt, wenn bestimmte Operatoren wie verwendet werden IN.

Lösung

Eine Problemumgehung für diese Einschränkung besteht darin, einen JOIN anstelle einer IN-Unterabfrage zu verwenden. Der folgende Code demonstriert diesen Ansatz:

$Last_Video = $db->fetch_all('
SELECT v.VID, v.thumb
FROM video AS v
INNER JOIN
     (SELECT VID
     FROM video
     WHERE title LIKE "%' . $Channel['name'] . '%"
     ORDER BY viewtime DESC
     LIMIT 5) AS v2
  ON v.VID = v2.VID
ORDER BY RAND()
LIMIT 1
');

In diesem Code:

  • Ein Tabellenalias „v“ wird für die äußere „Video“-Tabelle verwendet.
  • Eine Unterabfrage wird verwendet, um die VIDs von Videos auszuwählen, die dem Titelfilter entsprechen, und sie nach der Wiedergabezeit in absteigender Reihenfolge zu ordnen. Diese Unterabfrage trägt den Alias ​​„v2“.
  • Eine JOIN-Klausel wird verwendet, um die Haupttabelle „video“ mit der Unterabfrage „v2“ in der VID-Spalte zu verknüpfen.
  • Das Endergebnis ist begrenzt auf einen zufällig ausgewählten Datensatz mit RAND() und LIMIT.

Das obige ist der detaillierte Inhalt vonWie kann die Unterabfrage-LIMIT-Einschränkung von MySQL mit dem IN-Operator umgangen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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