วันพุธที่ 28 สิงหาคม พ.ศ. 2556

MySQL กับคำสั่งCopyแถวข้อมูล


     วันนี้มีคำสั่งของ MySQL มาแนะนำครับ ซึ่งมีประโยชน์ต่อการเพิ่มข้อมูลโดยที่เราไม่ต้องกรอกข้อมูลใหม่ทั้งหมด เช่น เราทำเว็บขายของหรือร้านค้าออนไลน์ มีสินค้าที่เป็นยี่ห้อเดียวกันแตกต่างกันที่รุ่นของสินค้าและมีรายละเอียดหรือสเป็คของสินค้าที่แตกต่างกันเล็กน้อย แต่ไม่ต้องการเพิ่มใหม่เองทั้งหมด แค่ต้องการจะนำข้อมูลเดิมจากสินค้าที่เพิ่มไปแล้วมาCopyเป็นRecordใหม่ และแก้ไขข้อมูลเพียงเล็กน้อยเท่านั้น เป็นต้น
รูปแบบของคำสั่งSQL
INSERT INTO tableที่จะเพิ่ม  (field1, field2)
SELECT field1,field2  FROM tableที่จะCopy
WHERE ใส่เงื่อนไข (ถ้ามี)
การใช้งาน
1.คัดลอกในเทเบิลเดียว
 เช่นผมมีเทเบิลสินค้าชื่อ products และต้องการคัดลอกสินค้ารหัส 2 (product_id=2) ให้เพิ่มแถวใหม่ แต่จะมีข้อมูลเหมือนสินค้ารหัส 2
ใช้คำสั่งSQLดังนี้
INSERT INTO products  (product_name, product_detail,product_qty)
SELECT product_name, product_detail ,0 FROM products
WHERE product_id=2
อธิบายคำสั่งข้อ 1
1.ฟิลด์ product_name ของเทเบิล products จะถูกเพิ่มลงฟิลด์ product_name และกลายเป็นแถวใหม่
2.ฟิลด์ product_detail ของเทเบิล products จะถูกเพิ่มลงฟิลด์ product_detail และกลายเป็นแถวใหม่
3.ค่า 0 (จำนวนสินค้า)  จะถูกเพิ่มลงฟิลด์ product_qty เพื่อเซตจำนวนสินค้าให้เป็นศูนย์ และกลายเป็นแถวใหม่


2.คัดลอกระหว่างเทเบิล
เช่นผมอยากคัดลอกเทเบิล members รหัส 3 (mb_id=3) ไปยัง เทเบิล admins แต่มีฟิลด์ไม่เหมือนกัน
เราสามารถเขียนคำสั่งSQLได้ดังนี้
INSERT INTO admins (admin_name, admin_tel)
SELECT mb_name, mb_tel FROM members
WHERE mb_id=3
อธิบายคำสั่งข้อ 2
1.ฟิลด์ mb_name ของเทเบิล members จะถูกเพิ่มลงใน ฟิลด์ admin_name ของเทเบิล admins
2.ฟิลด์ mb_tel ของเทเบิล members จะถูกเพิ่มลงใน ฟิลด์ admin_tel ของเทเบิล admins

หวังว่าบทความนี้จะมีประโยชน์ต่อผู้อ่านทุกท่าน  สงสัยตรงไหนสอบถามได้จากกล่องCommentด้านล่างเลยครับ ^^

ไม่มีความคิดเห็น :

แสดงความคิดเห็น