Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mệnh đề MySQL LIMIT tương đương cho SQL SERVER

Trong SQL Server 2012, có hỗ trợ cho tiêu chuẩn ANSI OFFSET / FETCH cú pháp. Tôi đã viết blog về cái này và đây là tài liệu chính thức (đây là phần mở rộng của ORDER BY ). Cú pháp của bạn được chuyển đổi cho SQL Server 2012 sẽ là:

SELECT ID, Name, Price, Image 
  FROM Products 
  ORDER BY ID ASC 
  OFFSET (@start_from - 1) ROWS -- not sure if you need -1
    -- because I don't know how you calculated @start_from
  FETCH NEXT @items_on_page ROWS ONLY;

Trước đó, bạn cần sử dụng nhiều cách giải quyết khác nhau, bao gồm ROW_NUMBER() phương pháp. Xem bài viết này thảo luận tiếp theo . Nếu bạn không sử dụng SQL Server 2012, bạn không thể sử dụng cú pháp chuẩn hoặc LIMIT không chuẩn của MySQL nhưng bạn có thể sử dụng một giải pháp dài dòng hơn như:

;WITH o AS
(
    SELECT TOP ((@start_from - 1) + @items_on_page)
         -- again, not sure if you need -1 because I 
         -- don't know how you calculated @start_from
      RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC)
      /* , other columns */
    FROM Products
)
SELECT 
    RowNum
    /* , other columns */
FROM
    o
WHERE
    RowNum >= @start_from
ORDER BY
    RowNum;

Có nhiều cách khác để lột da con mèo này, đây không phải là cách hiệu quả nhất nhưng về mặt cú pháp có lẽ là cách đơn giản nhất. Tôi khuyên bạn nên xem lại các liên kết mà tôi đã đăng cũng như các đề xuất trùng lặp được ghi chú trong các nhận xét cho câu hỏi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cấu hình khả dụng cao cho các nút ClusterControl sử dụng CMON HA

  2. MySQL Errno 150

  3. Làm cách nào để thực hiện 'chèn nếu không tồn tại' trong MySQL?

  4. Cách tạo cơ sở dữ liệu trong MySQL Workbench bằng GUI

  5. Lược đồ xuất MySql không có dữ liệu