Pangkalan data yang saya buat 15 tahun lalu direka dengan buruk. Saya mempunyai lajur varchar yang mengandungi rentetan dipisahkan koma: '5,8,13'. Rentetan tidak mengandungi ruang dan koma di belakang, tetapi bilangan nilai adalah berubah-ubah. Apa yang saya mahu lakukan ialah mencipta jadual baharu dan memindahkan nilai ini berpasangan dengan ID baris ke dalam jadual baharu. Dengan mengandaikan nilai di atas datang dari baris dengan ID 7, hasilnya akan menjadi 3 baris:
[ {7, 5} {7, 8} {7, 13} ]
Melihat set data sedia ada, lajur mempunyai nilai antara 1 hingga 6. Saya menjumpai urutan yang menunjukkan cara menggunakan fungsi rentetan split: Nilai pisah daripada satu medan kepada dua
Tetapi terus terang, saya tidak tahu bagaimana untuk menterjemah ini ke dalam satu operasi sisipan. Jika ini bukan tugas yang mudah, maka saya hanya akan menulis skrip PHP, walaupun ia akan mempunyai banyak penyata sisipan.
Untuk menerangkan lebih lanjut, berikut adalah dua jadual:
create table Table_A( id int auto_increment primary key, platforms varchar(255) ) create table Table_B( id int auto_increment primary key, platform int not null )
Table_A ialah data sedia ada, dengan data dalam lajur platform ialah nombor "3,45" atau "56,4" yang dipisahkan dengan koma. Nombor ini menunjukkan indeks dalam jadual lain. Ya, saya tahu ia adalah reka bentuk yang buruk, nasib baik saya telah belajar cara yang lebih baik sejak itu. Saya ingin menghuraikan nombor daripada rentetan platform Table_A dan memasukkannya ke dalam Table_B bersama ID baris Table_A.
Berikut ialah pertanyaan kecil untuk mencapai fungsi ini. Ia hanya membahagikan 6 nilai daripada CSV. Jika terdapat lebih banyak nilai berturut-turut anda perlu ubah UNION ALL
Hasil disimpan dalam jadual tunggal.