Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

คำสั่ง DELETE TOP ใน SQL Server

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