จะเกิดอะไรขึ้นถ้าคุณต้องการสร้างเรคคอร์ดดังกล่าวจำนวนมาก (เพื่อลงทะเบียนผู้ใช้ 10 คนไม่ใช่เพียงคนเดียว) ฉันค้นหาวิธีแก้ปัญหาต่อไปนี้ (เพียง 5 แบบสอบถาม):
ขั้นตอนที่ฉัน:สร้างตารางชั่วคราวเพื่อเก็บข้อมูลใหม่
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
ถัดไปกรอกตารางนี้ด้วยค่า
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
แทนที่จะ$ALL_VAL
ใส่รายการค่า: ('test1', 'test1', 'bio1', 'home1'), ... , ('testn', 'testn', 'bion', 'homen')
ขั้นตอนที่สอง:ส่งข้อมูลไปยังตาราง 'ผู้ใช้'
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
ที่นี่สามารถใช้ "IGNORE" ได้หากคุณอนุญาตให้ผู้ใช้บางคนอยู่ภายใน ไม่บังคับคุณสามารถใช้ UPDATE คล้ายกับขั้นตอนที่สามก่อนหน้าขั้นตอนนี้เพื่อค้นหาผู้ใช้ที่มีอยู่แล้วภายใน (และทำเครื่องหมายไว้ในตาราง tmp) ที่นี่เราระงับชื่อผู้ใช้นั้นจะถูกประกาศPRIMARY
ในตารางผู้ใช้
ขั้นตอนที่สาม:ใช้การอัปเดตเพื่ออ่าน id ผู้ใช้ทั้งหมดจากผู้ใช้กับตาราง tmp นี่คือขั้นตอนที่สำคัญ
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
ขั้นตอนที่สี่:สร้างตารางอื่นโดยใช้รหัสอ่านสำหรับผู้ใช้
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp