DELETE TOP ใช้ทำอะไร?
ลบแถวข้อมูลพร้อมจำกัดจำนวนแถวที่ลบ (TOP n หรือ PERCENT) ใช้เมื่อต้องการลบเป็นชุดๆ (Batch) เพื่อไม่ล็อกตารางนาน
รูปแบบคำสั่ง
DELETE TOP (n) [PERCENT]
FROM table_name
[WHERE condition];
ตัวอย่าง
1. ลบจำนวนคงที่
DELETE TOP (10)
FROM nhanvien
WHERE ho = 'Anderson';
ลบ 10 แถวแรกที่ match (ตามลำดับ physical storage ไม่มี ORDER BY)
2. ลบแบบเปอร์เซ็นต์
DELETE TOP (25) PERCENT
FROM nhanvien
WHERE ten = 'Sarah';
ลบ 25% ของแถวที่ match
ข้อควรระวัง
- ไม่มี
ORDER BYใน DELETE TOP → แถวที่ถูกลบเป็น non-deterministic (สุ่มตาม storage) - ต้องการลบตามลำดับเฉพาะ ใช้ CTE/Subquery กับ TOP แทน:
WITH cte AS (
SELECT TOP (10) *
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id
)
DELETE FROM cte;
ใช้งานจริง: ลบข้อมูลจำนวนมากแบบทีละชุด (Batch delete) เพื่อหลีกเลี่ยง Transaction Log ใหญ่และ Blocking