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

Tabel CTE Rekursif MySQL tidak ada

Struktur CTE rekursif Anda tidak aktif, dan bagian atas serikat harus menjadi kasus dasar benih. Kemudian, bagian rekursif harus menambahkan satu hari ke nilai masuk sebelumnya:

WITH RECURSIVE cte (n, dt) AS (
    SELECT 1, '2019-09-20'
    UNION ALL
    SELECT n + 1, TIMESTAMPADD(DAY, n, '2019-09-20') FROM cte WHERE n <= 5
)

SELECT * FROM cte;

Demo

Sebagai catatan, kami menggunakan TIMESTAMPADD() di sini untuk mengatasi masalah INTERVAL ekspresi, yang tidak dapat benar-benar mengambil variabel.

Jika Anda ingin menggunakan pendekatan ini untuk menghasilkan serangkaian tanggal yang cocok dengan nilai from dan to di tabel Anda, maka Anda dapat mencoba bergabung:

SELECT
    t1.dt
FROM cte t1
INNER JOIN yourTable t2
    ON t1.dt BETWEEN t2.from_date AND t2.to_date;

Saat digunakan dengan cara ini, CTE rekursif bertindak sebagai kalender tabel.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mendapatkan nilai dari URL

  2. Pilih rata-rata dari tabel MySQL dengan LIMIT

  3. Hapus sejumlah besar data dari tabel besar

  4. Perbedaan waktu rata-rata di mysql

  5. Bagaimana cara mengambil mikrodetik atau milidetik dari waktu MySQL saat ini?