จะลบออกจากตารางที่ ID อยู่ในรายการ ID ได้อย่างไร?


93

ถ้าฉันมีรายการ ID (1,4,6,7) และตาราง db ที่ฉันต้องการลบเร็กคอร์ดทั้งหมดที่ ID อยู่ในรายการนี้จะทำอย่างไร?

คำตอบ:


171

คำถามของคุณเกือบจะสะกด SQL สำหรับสิ่งนี้:

DELETE FROM table WHERE id IN (1, 4, 6, 7)

@jayarjo: ความแตกต่างใด ๆ อาจจะค่อนข้างเล็กน้อยและฉันไม่คิดว่าจะมีเหตุผลใดที่การลบทีละรายการจะมีประสิทธิภาพมากขึ้น
Matti Virkkunen

เป็นเพียงที่ประสิทธิภาพอาจกระทบความสะดวกสบาย ตัวอย่างเช่นฉันมีฟังก์ชั่นที่ต้องทำทีละรายการ แต่ถ้ามีโอกาสในการเพิ่มประสิทธิภาพฉันสามารถเขียนโค้ดเพิ่มเติมได้มิฉะนั้นอาจไม่คุ้มค่า
jayarjo

8
หนึ่งต่อหนึ่งจะช้าลงอย่างแน่นอนใน Oracle หรือ PostgreSQL การแบ่งการดำเนินการ SQL ออกไปเป็นการดำเนินการขนาดเล็กจำนวนมากเป็นวิธีที่ดีในการได้รับประสิทธิภาพที่ไม่ดี
David Aldridge

1
ฉันพบว่า 10,000 รายการในประโยค In ใช้เวลาประมาณ 200 วินาที แต่ 1,000 รายการใช้เวลา 3 วินาที (หรือ 30 วินาทีในการเปรียบเทียบแบบปกติ) ขนาดมีความสำคัญ
ohmusama

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.