sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger du WITH-klausulen i MySQL?

MySQL før version 8.0 understøtter ikke WITH-klausulen (CTE i SQL Server-sprog; Subquery Factoring i Oracle), så du står tilbage med at bruge:

  • MIDDELIGE tabeller
  • AFLEDTE tabeller
  • indbyggede visninger (faktisk hvad WITH-sætningen repræsenterer - de kan udskiftes)

Anmodningen om funktionen går tilbage til 2006.

Som nævnt gav du et dårligt eksempel - der er ingen grund til at udføre et undervalg, hvis du ikke ændrer outputtet af kolonnerne på nogen måde:

  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

Her er et bedre eksempel:

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


  1. Oprettelse af databasevedligeholdelsesplaner

  2. Omdøb kolonne SQL Server 2008

  3. Oracle Update Query ved hjælp af Join

  4. Forskelle mellem MySql og MySqli i PHP