Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwenden Sie die WITH-Klausel in MySQL?

MySQL vor Version 8.0 unterstützt die WITH-Klausel nicht (CTE im SQL Server-Jargon; Subquery Factoring in Oracle), also bleibt Ihnen die Verwendung von:

  • TEMPORÄRE Tabellen
  • ABGELEGTE Tabellen
  • Inline-Ansichten (eigentlich das, was die WITH-Klausel darstellt - sie sind austauschbar)

Die Anfrage für die Funktion stammt aus dem Jahr 2006.

Wie bereits erwähnt, haben Sie ein schlechtes Beispiel geliefert - es besteht keine Notwendigkeit, eine Unterauswahl durchzuführen, wenn Sie die Ausgabe der Spalten in keiner Weise ändern:

  SELECT * 
    FROM ARTICLE t
    JOIN USERINFO ui ON ui.user_userid = t.article_ownerid
    JOIN CATEGORY c ON c.catid =  t.article_categoryid
   WHERE t.published_ind = 0
ORDER BY t.article_date DESC 
   LIMIT 1, 3

Hier ist ein besseres Beispiel:

SELECT t.name,
       t.num
  FROM TABLE t
  JOIN (SELECT c.id
               COUNT(*) 'num'
          FROM TABLE c
         WHERE c.column = 'a'
      GROUP BY c.id) ta ON ta.id = t.id