Jawaban:
Ya, tentu saja, tetapi periksa sintaks Anda.
INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM courses
WHERE cid = 2
Anda dapat menempatkan konstanta dengan tipe yang sama seperti gid
di tempatnya, tentu saja tidak hanya 1. Dan, saya baru saja membuat cid
nilainya.
OUTPUT
klausa , yang memungkinkan Anda memasukkan apa pun yang Anda masukkan ke dalam tabel lain juga. Saya tidak berpikir MySQL memiliki padanan. Anda dapat membuat tabel sementara , pilih ke dalam tabel itu, lalu isi courses
dari tabel itu, kemudian gunakan tabel temp untuk apa pun yang Anda butuhkan.
Ya itu. Kamu bisa menulis :
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
atau Anda bisa mendapatkan nilai dari gabungan lain dari ...
Sintaks yang Benar: pilih ejaan salah
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
Tentu, apa yang ingin Anda gunakan untuk gid? nilai statis, PHP var, ...
Nilai statis 1234 bisa seperti:
INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid
Saya pikir pernyataan INSERT Anda salah, lihat sintaks yang benar: http://dev.mysql.com/doc/refman/5.1/en/insert.html
sunting: seperti yang sudah ditunjukkan Andrew ...
Tentu saja Anda bisa.
Namun satu hal yang harus diperhatikan: INSERT INTO SELECT
Pernyataan menyalin data dari satu tabel dan menyisipkannya ke tabel lain DAN mengharuskan jenis data dalam tabel sumber dan target cocok. Jika tipe data dari kolom tabel yang diberikan tidak cocok (yaitu mencoba memasukkan VARCHAR
ke dalam INT
, atau TINYINT
ke INT
) server MySQL akan melempar SQL Error (1366)
.
Jadi berhati-hatilah.
Berikut ini sintaks dari perintah:
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;
Catatan: Ada cara untuk menghindari masalah penyisipan jenis kolom yang berbeda dengan menggunakan casting di Anda SELECT
, misalnya:
SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
Konversi ini ( CAST()
adalah sinonim dari CONVERT()
) sangat berguna jika tabel Anda memiliki rangkaian karakter yang berbeda pada kolom tabel yang sama (yang berpotensi menyebabkan hilangnya data jika tidak ditangani dengan benar).
Sintaks yang tepat untuk permintaan Anda adalah:
INSERT INTO courses (name, location, gid)
SELECT (name, location, gid)
FROM courses
WHERE cid = $cid