Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Anda menggunakan klausa WITH di MySQL?

MySQL sebelum versi 8.0 tidak mendukung klausa WITH (CTE dalam bahasa SQL Server; Subquery Factoring di Oracle), jadi Anda tinggal menggunakan:

  • Tabel TEMORARY
  • Tabel turunan
  • tampilan sebaris (secara efektif mewakili klausa WITH - mereka dapat dipertukarkan)

Permintaan untuk fitur tersebut dimulai pada tahun 2006.

Seperti yang disebutkan, Anda memberikan contoh yang buruk - tidak perlu melakukan subselect jika Anda tidak mengubah output kolom dengan cara apa pun:

  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

Berikut ini contoh yang lebih baik:

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. Masukkan array ke database MySQL dengan PHP

  2. Cara Mengubah Ukuran Kolom di MySQL

  3. kesalahan mysql 1364 Bidang tidak memiliki nilai default

  4. Java:Masukkan beberapa baris ke MySQL dengan PreparedStatement

  5. Muat data CSV ke MySQL dengan Python