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

Ulangi n kali tanpa menggunakan prosedur tersimpan

Dokumen MySQL di Pernyataan Kontrol Aliran katakan:

Dokumen di Program dan Tampilan Tersimpan katakan:

Sintaks Pernyataan-Komponen

Jadi, sepertinya Anda dapat menjalankan loop eksplisit hanya dalam prosedur, fungsi, atau pemicu yang tersimpan.

Bergantung pada apa yang Anda lakukan dalam pernyataan SQL Anda, mungkin dapat diterima untuk menggunakan tabel (atau tampilan) angka (Membuat "Tabel Angka" di mysql , MYSQL:Tabel Nomor Sequential ).

Jika kueri Anda adalah SELECT dan boleh saja mengembalikan hasil SELECT . Anda 10 kali sebagai satu set hasil yang panjang (sebagai lawan dari 10 set hasil terpisah), Anda dapat melakukan sesuatu seperti ini:

SELECT MainQuery.*
FROM
    (
        SELECT 1 AS Number 
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9
        UNION ALL SELECT 10
    ) AS Numbers
    CROSS JOIN
    (
        SELECT 'some data' AS Result
    ) AS MainQuery

Contoh untuk INSERT

Saya merekomendasikan untuk memiliki tabel angka permanen di database Anda. Ini berguna dalam banyak kasus. Lihat tautan di atas cara membuatnya.

Jadi, jika Anda memiliki tabel Numbers dengan int kolom Number dengan nilai dari 1 hingga, katakanlah, 100K (seperti yang saya lakukan), dan kunci utama pada kolom ini, lalu alih-alih loop ini:

DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
    INSERT INTO table_name(col1,col2,col3) 
    VALUES("val1","val2",count);

    SET count = count + 1;
END WHILE;

Anda dapat menulis:

INSERT INTO table_name(col1,col2,col3)
SELECT ("val1", "val2", Numbers.Number-1)
FROM Numbers
WHERE Numbers.Number <= 10;

Ini juga akan bekerja hampir 10 kali lebih cepat.



  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 cara mencocokkan email atau telepon dengan Elasticsearch?

  2. SQL Bagaimana menjumlahkan dari tabel lain dan menyisipkan di tabel lain

  3. VARCHAR sebagai kunci asing/kunci utama dalam database baik atau buruk?

  4. Praktik terbaik untuk menyimpan kata sandi basis data

  5. Sisipan Python MySql tidak berfungsi