เทสงานที่มีการบันทึกข้อมูลไว้ ถ้าจะทำอีกครั้งก็ต้อง update กลับไปเป็นเหมือนเดิม แต่เพราะว่าเงื่อนไขมันกว้างมาก ๆ เลยไปอัพเดททั้ง table เลยมันช้าไป เปลืองทรัพยากร เลยหาวิธีอื่นดู
- ROWCOUNT อย่างต้องการให้ update แค่ 100 รายการแรก
- SET ROWCOUNT 100;
UPDATE table_name
SET colunm_name = …
WHERE column_name = …
SET ROWCOUNT 0;
- SET ROWCOUNT 100;
- TOP จะง่ายกว่าหน่อย
- UPDATE TOP(100) table_name
SET colunm_name = …
WHERE column_name = …
- UPDATE TOP(100) table_name
- CTE
- ;WITH CTE AS
(
SELECT TOP 100 *
FROM table_name
ORDER BY colunm_name
)
UPDATE CTE SET colunm_name = …
- ;WITH CTE AS
- Sub Query
- UPDATE table_name
SET column_name =…
WHERE column_id IN (
SELECT TOP 100 column_id
FROM table_name
WHERE column_name = 0
)
- UPDATE table_name
เลือกเอาแบบที่ชอบได้เลยครับ ตัวที่ผมชอบที่สุดคือ ROWCOUNT เพราะว่าใช้ query จริง ๆ มาวางได้เลย
About the author