ฉันมีผู้สอนโต๊ะและฉันต้องการลบบันทึกที่มีเงินเดือนอยู่ในช่วงหนึ่งวิธีที่ใช้งานง่ายมีดังนี้:
delete from instructor where salary between 13000 and 15000;
อย่างไรก็ตามในเซฟโหมดฉันไม่สามารถลบบันทึกได้โดยไม่ต้องระบุคีย์หลัก (ID)
ดังนั้นฉันจึงเขียน sql ต่อไปนี้:
delete from instructor where ID in (select ID from instructor where salary between 13000 and 15000);
อย่างไรก็ตามมีข้อผิดพลาด:
You can't specify target table 'instructor' for update in FROM clause
ฉันสับสนเพราะเมื่อฉันเขียน
select * from instructor where ID in (select ID from instructor where salary between 13000 and 15000);
มันไม่ก่อให้เกิดข้อผิดพลาด
คำถามของฉันคือ:
- ข้อความแสดงข้อผิดพลาดนี้หมายความว่าอย่างไรและเหตุใดรหัสของฉันจึงผิด
- จะเขียนโค้ดนี้ใหม่เพื่อให้ทำงานภายใต้เซฟโหมดได้อย่างไร
ขอบคุณ!