วันอาทิตย์ที่ 31 สิงหาคม พ.ศ. 2551

การทำ limit of query ของ MS SQL Server

ในปรกติแล้วคำสั่ง SQL ในการกำหนดจำนวนเรคคอร์ดที่จะนำข้อมูลมาแสดงนั้น MySQL จะใช้คำสั่ง LIMIT
ตัวอย่างเช่น
SELECT * FROM employee LIMIT 1,20

แต่ถ้าเป็น MS SQL SERVER (2005)

จะใช้คำสั่ง ROW_NUMBER()
Syntax: row_number() over([] )

แต่มาเรามาประยุกต์ใช้ row_number() กันดีกว่านะครับ สมมุติผมต้องการจะให้ เรคคอร์ดที่ต้องการแสดง 10 เรคคอร์ดเริ่มตั้งแต่ 5 ถึง 15 ตามเงื่อนใขก็จะได้ SQL statement ดังตัวอย่าง

SELECT *
FROM (SELECT ROW_NUMBER() OVER (ORDER BY employee_id) AS rownum
,employee_id,employee_name,employee_salary
FROM employee ) AS e
WHERE rownum >=5 AND rownum <=15

เท่านี้ก็จะเหมือนคำสั่ง SQL ใน MySQL คือ SELECT employee_id,employee_name,employee_salary FROM employee LIMIT 5,10

ซึ่งเหตุผลที่ MS SQL SERVER ก็มีเหตุผลเรื่องประสิทธิภาพต่าง ๆ เข้ามาพิจารณา ดังนั้นก็เป็นทางเลือกของเราที่จะนำมาเป็นข้อพิจารณาในการเลือกใช้ผลิตภัณฑ์ต่าง ๆ ให้เหมาะสมกับเวลาและโอกาส ความจำเป็นของเราอีกทางนึงด้วยนะครับ อิิอิ

ไม่มีความคิดเห็น: