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

MySQL LIMIT Clause เทียบเท่าใน SQL Server คืออะไร

MySQL ใช้ LIMIT สำหรับจำกัดจำนวนแถวผลลัพธ์ ใน SQL Server ใช้ OFFSET ... FETCH (SQL Server 2012+) หรือ TOP (รุ่นเก่า)

MySQL LIMIT Syntax

SELECT column_name FROM table_name LIMIT offset, row_count;
-- หรือ
SELECT column_name FROM table_name LIMIT row_count OFFSET offset;

ตัวอย่าง MySQL

SELECT id FROM limitDemo LIMIT 5 OFFSET 2;
-- ข้าม 2 แถวแรก แล้ว取 5 แถว (แถวที่ 3-7)

SQL Server Equivalent

SQL Server 2012+ (มาตรฐาน ANSI SQL)

SELECT id FROM limitDemo
ORDER BY id
OFFSET 2 ROWS FETCH NEXT 5 ROWS ONLY;

SQL Server 2008/2008 R2 (ใช้ TOP + ROW_NUMBER)

SELECT id FROM (
    SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS rn
    FROM limitDemo
) AS t
WHERE rn > 2 AND rn <= 7;

SQL Server ทุก Version (ใช้ TOP สำหรับหน้าแรก)

-- หน้าแรก (Top 5)
SELECT TOP 5 id FROM limitDemo ORDER BY id;

-- หน้าต่อไป ต้องใช้ Subquery

ตารางเปรียบเทียบ

คุณสมบัติMySQL LIMITSQL Server OFFSET/FETCH
รองรับ Versionทุก Version2012+
SyntaxLIMIT offset, countOFFSET n ROWS FETCH NEXT m ROWS ONLY
ต้องการ ORDER BYไม่บังคับ (แต่ควรมี)บังคับ
Performanceดีมากดี (ต้องมี Index ให้ถูกต้อง)

คำแนะนำ

  • ใน SQL Server ต้องมี ORDER BY เสมอ เมื่อใช้ OFFSET/FETCH
  • สร้าง Index บนคอลัมน์ที่ ORDER BY เพื่อประสิทธิภาพ
  • หลีกเลี่ยง OFFSET มากๆ (Deep Paging) ใช้ Keyset Pagination แทน