Menggabungkan INSERT dan SELECT dengan Nilai Lajur yang Diubah Suai
Contoh ini menunjukkan cara untuk memasukkan data ke dalam jadual courses
menggunakan penyataan SELECT
, sambil memberikan nilai khusus pada lajur gid
secara serentak, tanpa mengira nilai yang diambil daripada jadual sumber.
Pertanyaan asal cuba menyalin data daripada jadual courses
:
<code class="language-sql">INSERT INTO courses (name, location, gid) SELECT name, location, gid FROM courses WHERE cid = $cid</code>
Persoalannya ialah sama ada kita boleh mengubah suai nilai gid
semasa proses penyisipan.
Penyelesaian
Ya, ini boleh dicapai. Kuncinya ialah menggantikan lajur gid
dalam pernyataan SELECT
dengan nilai malar atau ungkapan yang berbeza. Pertanyaan berikut menggambarkan ini:
<code class="language-sql">INSERT INTO courses (name, location, gid) SELECT name, location, 1 -- '1' is the new gid value FROM courses WHERE cid = 2 -- Example condition; replace '2' with your desired cid</code>
Dalam pertanyaan yang diubah suai ini, lajur gid
dalam pernyataan INSERT
akan sentiasa menerima nilai 1
, tanpa mengira nilai gid
dalam baris yang dipilih daripada jadual courses
. Anda boleh menggantikan 1
dengan sebarang pemalar atau ungkapan yang sesuai yang menghasilkan nilai yang serasi dengan jenis data lajur gid
. Klausa WHERE
menapis data sumber, memastikan hanya baris yang berkaitan digunakan untuk sisipan.
Atas ialah kandungan terperinci Bolehkah saya INSERT ke dalam jadual dengan SELECT, memberikan nilai yang berbeza kepada satu lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!