บางครั้งต้องการข้อมูลจำนวนมาก เพื่อ test บางอย่าง เช่น ระบบแบ่งหน้า โชคดีที่มายเอสคิวเอลสามารถ copy มาจาก record อื่นๆได้ เช่น
INSERT INTO tableName (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM tableName WHERE primarykey = 1
สมมุติจะคัดลอกตาราง `cds` ในดาต้าเบส cdcol ที่เป็นตัวอย่างติด xampp มา ถ้าไม่มีสร้างใหม่ได้จาก query
CREATE TABLE IF NOT EXISTS `cds` ( `titel` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, `interpret` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, `jahr` int(11) DEFAULT NULL, `id` bigint(20) unsigned NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ; INSERT INTO `cds` (`titel`, `interpret`, `jahr`, `id`) VALUES ('Beauty', 'Ryuichi Sakamoto', 1990, 1), ('Goodbye Country (Hello Nightclub)', 'Groove Armada', 2001, 4), ('Glee', 'Bran Van 3000', 1997, 5); ALTER TABLE `cds` ADD PRIMARY KEY (`id`);
เราจะ copy เพิ่มโดยคิวรี่
INSERT INTO `cds`(`titel`, `interpret`, `jahr`) SELECT `titel`, `interpret`, `jahr` FROM `cds` WHERE `id` = 5
สังเกต จะไม่เลือก ฟิลด์ id เพราะ field มันเป็น primary key หลังจากรันคิวรี่จะเห็นว่าข้อมูลเพิ่มขึ้นมาใหม่เหมือนข้อมูลใน id = 5 ทุกอย่างยกเว้น id
About the author