Mysql
 sql >> база данни >  >> RDS >> Mysql

Как използвате клаузата WITH в MySQL?

MySQL преди версия 8.0 не поддържа клаузата WITH (CTE на език на SQL Server; Факторинг на подзаявки в Oracle), така че ви остава да използвате:

  • ВРЕМЕННИ таблици
  • ИЗВЕДЕНИ таблици
  • вградени изгледи (в действителност това, което представлява клаузата WITH - те са взаимозаменяеми)

Заявката за функцията датира от 2006 г.

Както споменахме, предоставихте лош пример - няма нужда да извършвате подселекция, ако не променяте изхода на колоните по никакъв начин:

  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

Ето по-добър пример:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Cross Server Select Query

  2. MySQL DATEDIFF() срещу TIMESTAMPDIFF():Каква е разликата?

  3. Възстановяване на MySQL база данни от физически файлове

  4. MySQL комбинира две колони и добавете в нова колона

  5. MySQL ИЗБЕРЕТЕ LIKE или REGEXP, за да съпоставите няколко думи в един запис