Heim > Datenbank > MySQL-Tutorial > Warum schlägt MySQL fehl, wenn LIMIT in NOT IN-Unterabfragen verwendet wird?

Warum schlägt MySQL fehl, wenn LIMIT in NOT IN-Unterabfragen verwendet wird?

Mary-Kate Olsen
Freigeben: 2024-11-16 00:54:03
Original
881 Leute haben es durchsucht

Why Does MySQL Fail When Using LIMIT in NOT IN Subqueries?

LIMIT in NOT IN-Unterabfragen: MySQL-Einschränkungen

Bei der Arbeit mit MySQL kann es zu Einschränkungen bei der Verwendung von Unterabfragen innerhalb von LIMIT-Klauseln kommen. Ein häufiges Problem tritt auf, wenn versucht wird, Datensätze zu löschen, die nicht in einem bestimmten Bereich enthalten sind.

Angenommen, Sie möchten Beiträge löschen, die nicht zu den letzten 15 gehören. Ein naiver Ansatz könnte die folgende Abfrage beinhalten:

DELETE FROM posts 
WHERE id NOT IN 
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15);
Nach dem Login kopieren

Diese Abfrage wird jedoch wahrscheinlich fehlschlagen und eine Fehlermeldung wie „MySQL unterstützt die Unterabfrage LIMIT & IN/ALL/ANY/SOME noch nicht“ zurückgeben.

Das Problem wird behoben Einschränkung

Um diese Einschränkung zu überwinden, können Sie einen Workaround anwenden, indem Sie die Unterabfrage in eine andere Unterabfrage einschließen:

DELETE FROM posts 
WHERE id NOT IN 
(SELECT * FROM (
    SELECT id 
    FROM posts 
    ORDER BY timestamp DESC 
    LIMIT 0, 15
) AS t);
Nach dem Login kopieren

In dieser modifizierten Abfrage die Unterabfrage, die die letzten 15 Beiträge auswählt wird ein Alias ​​„t“ zugewiesen und dann verwendet die äußere Unterabfrage den Alias, um die ausgeschlossenen IDs abzurufen. Das Ergebnis ist eine gültige Abfrage, die die gewünschte Löschung bewirken sollte.

Das obige ist der detaillierte Inhalt vonWarum schlägt MySQL fehl, wenn LIMIT in NOT IN-Unterabfragen verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage