ดึงข้อมูล ID หลังจากการแทรกจำนวนมาก

ฉันใช้ MySQL 5.5 กับ PHP 5.4 ฉันกำลังดำเนินการแทรกจำนวนมากและจำเป็นต้องบันทึกรหัสที่แทรกใหม่ทั้งหมด นี่คือรหัสของฉัน:

$db->query("INSERT INTO commodity (analysis_id, commodity_description, a_units, 
a_average_yield, a_average_price) SELECT $analysis_id, commodity_description, 
a_units, a_average_yield, a_average_price FROM commodity WHERE analysis_id = 
$import_analysis_id");

มีวิธีดึง ID ใหม่ทั้งหมดของแถวที่แทรกหรือไม่ การใช้ $db->insert_id จะส่งคืน ID เดียวเท่านั้น ฉันไม่อยากต้องใช้ PHP loop และดำเนินการหลาย ๆ คำสั่ง แต่ฉันจะทำถ้าจำเป็น ขอบคุณ!


person Jeff    schedule 18.07.2012    source แหล่งที่มา
comment
เป็นไปไม่ได้ (ฉันรู้วิธีแก้ปัญหาไม่ทราบ) คุณช่วยกรุณาโพสต์ตัวอย่างสิ่งที่คุณต้องการ ID ได้ไหม? บางทีเราอาจพบวิธีอื่นในการเก็บเป้าหมายของคุณ...   -  person Ron    schedule 18.07.2012
comment
คุณมี datetime ใด ๆ บันทึกไว้ในตารางของคุณหรือไม่? ถ้าใช่คุณสามารถเขียนแบบสอบถามง่ายๆ เพื่อรับรหัสที่แทรกทั้งหมดหลังจากการประทับเวลาโดยเฉพาะ ..   -  person metalfight - user868766    schedule 18.07.2012
comment
ชื่อฟิลด์ของ ID ที่คุณต้องการคืออะไร? ฉันเดาว่ามันไม่ใช่ analyse_id อาจเป็น Commodity_id หรืออาจเป็นแค่ id ก็ได้   -  person ghbarratt    schedule 18.07.2012


คำตอบ (2)


คุณสามารถค้นหา ids ที่เพิ่มขึ้นอัตโนมัติได้โดยเลือกรหัสสูงสุดในตารางของคุณก่อน ids สูงกว่าของใหม่หลังจากการแทรก

select max(id) from commodity 
person juergen d    schedule 18.07.2012
comment
ด้วยโซลูชันนี้ ให้พิจารณาใช้ LOCK TABLES เพื่อป้องกันไม่ให้เซสชันอื่นๆ แทรกลงในตารางเดียวกัน ซึ่งทำให้ข้อมูลของคุณบิดเบือน - person Marcus Adams; 18.07.2012
comment
การใช้ LOCK TABLES เป็นความคิดที่ดีจริงๆ แต่นี่เป็นการชะลอกระบวนการของฉันเนื่องจากมีเพียงกระบวนการเดียวเท่านั้นที่สามารถทำได้ในแต่ละครั้ง - person Ron; 18.07.2012
comment
ฉันคิดว่าเยอร์เก้นพูดถูก สำหรับ InnoDB คุณสามารถใช้ธุรกรรม (พร้อมการอ่านซ้ำได้) ซึ่งจะอนุญาตให้ใช้ตารางพร้อมกันได้ - person Marcus Adams; 18.07.2012

ฉันเดาว่าฉันคิดเรื่องนี้มากเกินไป เนื่องจากฉันกำลังแทรก analytics_id (เช่น หมายเลขเคส หมายเลขลูกค้า ฯลฯ) ฉันจึงตัดสินใจเรียกใช้การสืบค้นหลังจากอันนี้ ซึ่งจะดึง ID ทั้งหมดสำหรับ analysis_id ที่แทรกไว้ นี่ช่วยแก้ปัญหาของฉันได้

person Jeff    schedule 18.07.2012
comment
เย็น. analyse_id ได้รับการจัดทำดัชนีแล้วหรือไม่ - person Marcus Adams; 18.07.2012