sql >> Databasteknik >  >> RDS >> Mysql

Hur använder du WITH-satsen i MySQL?

MySQL före version 8.0 stöder inte WITH-klausulen (CTE på SQL Server-språk; Subquery Factoring i Oracle), så du har kvar att använda:

  • TILLfälliga tabeller
  • DERIVADE tabeller
  • inline-vyer (i praktiken vad WITH-satsen representerar - de är utbytbara)

Begäran om funktionen går tillbaka till 2006.

Som nämnts gav du ett dåligt exempel - det finns inget behov av att göra ett underval om du inte ändrar utdata från kolumnerna på något sätt:

  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

Här är ett bättre exempel:

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. Hur man installerar Haproxy och Keepalved

  2. JDBC MySql-anslutningspoolning görs för att undvika uttömd anslutningspool

  3. nvarchar-konkatenering / index / nvarchar(max) oförklarligt beteende

  4. Returnera dag, månad och år i MySQL