sql >> Databáze >  >> RDS >> Mysql

Jak používáte klauzuli WITH v MySQL?

MySQL starší než verze 8.0 nepodporuje klauzuli WITH (CTE v jazyce SQL Server; Faktorování poddotazů v Oracle), takže vám zbývá použít:

  • TEČASNÉ tabulky
  • ODVODENÉ tabulky
  • inline pohledy (ve skutečnosti to, co představuje klauzule WITH – jsou vzájemně zaměnitelné)

Žádost o tuto funkci pochází z roku 2006.

Jak již bylo zmíněno, uvedli jste špatný příklad – není třeba provádět podvýběr, pokud žádným způsobem neměníte výstup sloupců:

  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

Zde je lepší příklad:

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. Jak klasifikovat, najít a maskovat PII v databázích…

  2. Jak převést z jednoho formátu data na jiný v SQL Server pomocí CONVERT()

  3. Požadavek se nezdařil se stavem HTTP 401:Neautorizováno v SSRS

  4. Jak funguje funkce FORMAT() v SQL Server (T-SQL)