Einschränkung der Ansicht vor MySQL 5.1: Unterabfragen in der FROM-Klausel
In Versionen vor MySQL 5.1 wird ein Fehler gemeldet, wenn die FROM-Klausel der Ansicht eine Unterabfrage enthält. Diese Einschränkung verringert die Flexibilität beim Erstellen von Datenbankabfragen.
Grundursache
In der Vergangenheit fehlte der MySQL-Engine die Implementierung für die Verarbeitung von Unterabfragen in der FROM-Klausel von Ansichten. Dies ist hauptsächlich auf die Komplexität des Motors und Leistungsprobleme zurückzuführen.
Lösung
Um diese Einschränkung zu umgehen, können Sie die folgenden Methoden verwenden:
Beispiel einer Lösung
Betrachten Sie die folgende Beispielabfrage:
<code class="language-sql">SELECT temp.UserName FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId Group BY u1.name HAVING SentCount > 3 ) as temp</code>
Eine mögliche Problemumgehung mithilfe einer abgeleiteten Tabelle:
<code class="language-sql">SELECT dt.UserName FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name HAVING SentCount > 3 ) dt</code>
Abfragebeschränkung
Während die obige Problemumgehung die meisten Szenarien abdeckt, gibt es einige Sonderfälle, in denen eine Unterabfrage in der FROM-Klausel unerlässlich sein kann. In Versionen vor MySQL 5.1 gibt es für diese Art von Abfrage keine direkte Problemumgehung.
Das obige ist der detaillierte Inhalt vonWarum können MySQL-Ansichten (vor 5.1) keine Unterabfragen in der FROM-Klausel verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!