นี่เป็นวิธีแก้ปัญหาที่คุณมีหลายฟิลด์ในตารางของคุณและไม่ต้องการให้นิ้วเป็นตะคริวจากการพิมพ์ฟิลด์ทั้งหมดเพียงแค่พิมพ์ฟิลด์ที่ต้องการ :)
วิธีคัดลอกบางแถวลงในตารางเดียวกันโดยที่บางฟิลด์มีค่าแตกต่างกัน:
- สร้างตารางชั่วคราวพร้อมแถวทั้งหมดที่คุณต้องการคัดลอก
- อัพเดตแถวทั้งหมดในตารางชั่วคราวด้วยค่าที่คุณต้องการ
- หากคุณมีฟิลด์การเพิ่มอัตโนมัติคุณควรตั้งค่าเป็น NULL ในตารางชั่วคราว
- คัดลอกแถวทั้งหมดของตารางชั่วคราวลงในตารางต้นฉบับของคุณ
- ลบตารางชั่วคราว
รหัสของคุณ:
CREATE table temporary_table AS SELECT * FROM original_table WHERE Event_ID="155";
UPDATE temporary_table SET Event_ID="120";
UPDATE temporary_table SET ID=NULL
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table
รหัสสถานการณ์ทั่วไป:
CREATE table temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
UPDATE temporary_table SET <auto_inc_field>=NULL;
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table
ประยุกต์ / รหัสย่อ:
CREATE TEMPORARY TABLE temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <auto_inc_field>=NULL, <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
INSERT INTO original_table SELECT * FROM temporary_table;
เนื่องจากการสร้างตารางชั่วคราวใช้TEMPORARY
คำหลักมันจะถูกลบโดยอัตโนมัติเมื่อเซสชันเสร็จสิ้น (ตามที่แนะนำ @ ar34z)