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

MySQL Masukkan Ke Pilih

Terkadang Anda mungkin perlu memasukkan banyak nilai dari satu tabel ke tabel lain di MySQL. Mungkin membosankan untuk memasukkan nilai-nilai ini secara manual dalam pernyataan sql INSERT Anda. Berikut cara mudah menggunakan pernyataan SELECT untuk memasukkan nilai ke dalam tabel dengan query MySQL INSERT INTO SELECT. Anda dapat menggunakannya untuk mengisi tabel MySQL dengan cepat.

Sisipkan MySQL ke Pilihan

Berikut adalah langkah-langkah untuk menyisipkan nilai dalam tabel MySQL menggunakan pernyataan INSERT INTO SELECT. Katakanlah Anda memiliki tabel berikut new_orders(id, order_date, amount)

mysql> create table new_orders(id int, order_date date, amount int);

Berikut sintaks untuk pernyataan MySQL INSERT INTO SELECT.

INSERT INTO table_name(column_list)
SELECT 
   select_list 
FROM 
   another_table
WHERE
   condition;

Dalam kueri di atas, kami menggunakan pernyataan SELECT, bukan klausa VALUES. Sangat berguna untuk menyalin satu atau beberapa baris dengan cepat dari tabel lain, atau bahkan ringkasan data dari tabel lain.

Bonus Baca :MySQL Pilih N Baris Teratas

Mari kita lihat beberapa contoh untuk MySQL INSERT INTO SELECT.

MySQL INSERT IN TO SELECT GANDA BARIS

Berikut query SQL untuk menyisipkan beberapa baris ke dalam tabel menggunakan pernyataan INSERT INTO SELECT.

mysql> insert into new_orders
       select id, order_date, item_price
       from orders;

mysql> select * from new_orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-01 |    150 |
|    2 | 2020-07-01 |    235 |
+------+------------+--------+

Anda dapat menghilangkan nama kolom setelah klausa INSERT jika nama kolom dalam pernyataan SELECT identik dengan yang ada di tabel Anda.

Bonus Baca :MySQL Hapus Duplikat Records

MySQL MASUKKAN KE PILIH DARI TABEL YANG SAMA

Berikut query SQL untuk menyisipkan baris dari tabel yang sama menggunakan pernyataan INSERT INTO SELECT.

mysql> insert into new_orders
       select *
       from new_orders;

mysql> select * from new_orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-01 |    150 |
|    2 | 2020-07-01 |    235 |
|    1 | 2020-07-01 |    150 |
|    2 | 2020-07-01 |    235 |
+------+------------+--------+

Dalam query di atas, kita menggunakan MySQL INSERT INTO SELECT untuk semua kolom dalam sebuah tabel.

Bonus Baca :Cara Menjalankan Stored Procedure

MySQL INSERT INTO SELECT dari Database Lain

Berikut query SQL untuk menyisipkan baris dari database lain dasbor . Satu-satunya perbedaan adalah menambahkan nama database ke nama tabel Anda di kueri SELECT.

mysql> insert into users (user_id,date_joined)
select id,date_joined
from dashboard.auth_user;

Dalam kueri di atas, kami telah menggunakan dashboard.auth_user alih-alih hanya auth_user untuk menentukan bahwa tabel ini berada di database yang berbeda.

Bonus Baca :MySQL Dapatkan Duplikat Record

MySQL INSERT INTO SELECT pada pembaruan duplikat

Jika Anda memasukkan duplikat kunci utama atau nilai indeks dalam tabel, MySQL akan membuat kesalahan. Dalam pernyataan INSERT INTO SELECT, Anda juga dapat menginstruksikan MySQL untuk memperbarui kolom tertentu jika ada nilai duplikat, menggunakan klausa ON DUPLICATE KEY UPDATE. Berikut adalah contoh MySQL INSERT INTO SELECT pada pembaruan duplikat.

Katakanlah Anda memiliki tabel berikut x_orders(id, jumlah)

mysql> create table x_orders(id int auto_increment primary key, amount int);

Katakanlah Anda memiliki tabel new_orders yang memiliki nilai duplikat untuk kolom id.

mysql> select * from new_orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-01 |    150 |
|    2 | 2020-07-01 |    235 |
|    1 | 2020-07-01 |    150 |
|    2 | 2020-07-01 |    235 |
+------+------------+--------+

Katakanlah Anda mencoba memasukkan nilai dari tabel new_orders ke x_orders. Anda akan mendapatkan kesalahan seperti yang ditunjukkan.

mysql> insert into x_orders(id,amount)
       select id, amount
       from new_orders;
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Berikut SQL untuk menggunakan klausa ON DUPLICATE KEY UPDATE.

mysql> insert into x_orders(id,amount)
       select id, amount
       from new_orders
       on duplicate key update id = RAND() * 100;

mysql> select * from x_orders;
+----+--------+
| id | amount |
+----+--------+
| 27 |    235 |
| 48 |    150 |
| 58 |    235 |
| 62 |    150 |
+----+--------+

Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  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 menyisipkan beberapa baris dari array menggunakan kerangka CodeIgniter?

  2. Koneksi MySQL melalui terowongan SSH - bagaimana cara menentukan server MySQL lainnya?

  3. GALAT 2002 (HY000):Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)

  4. Ekspor dan Impor semua database MySQL sekaligus

  5. PHP MYSQL UPDATE jika Ada atau INSERT jika tidak?