บางครั้งต้องการข้อมูลจำนวนมาก เพื่อ test บางอย่าง เช่น ระบบแบ่งหน้า โชคดีที่มายเอสคิวเอลสามารถ copy มาจาก record อื่นๆได้ เช่น
1 2 3 | INSERT INTO tableName (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM tableName WHERE primarykey = 1 |
สมมุติจะคัดลอกตาราง `cds` ในดาต้าเบส cdcol ที่เป็นตัวอย่างติด xampp มา ถ้าไม่มีสร้างใหม่ได้จาก query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 เพิ่มโดยคิวรี่
1 2 3 4 | INSERT INTO `cds`(`titel`, `interpret`, `jahr`) SELECT `titel`, `interpret`, `jahr` FROM `cds` WHERE `id` = 5 |
สังเกต จะไม่เลือก ฟิลด์ id เพราะ field มันเป็น primary key หลังจากรันคิวรี่จะเห็นว่าข้อมูลเพิ่มขึ้นมาใหม่เหมือนข้อมูลใน id = 5 ทุกอย่างยกเว้น id