Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Klausa MySQL LIMIT setara untuk SQL SERVER

Di SQL Server 2012, ada dukungan untuk standar ANSI OFFSET / FETCH sintaksis. Saya membuat blog tentang ini dan ini dokumen resmi (ini adalah ekstensi untuk ORDER BY ). Sintaks Anda yang dikonversi untuk SQL Server 2012 adalah:

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;

Sebelum itu, Anda perlu menggunakan berbagai solusi, termasuk ROW_NUMBER() metode. Lihat artikel ini dan diskusi lanjutan . Jika Anda tidak menggunakan SQL Server 2012, Anda tidak dapat menggunakan sintaks standar atau LIMIT non-standar MySQL tetapi Anda dapat menggunakan solusi yang lebih bertele-tele seperti:

;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;

Ada banyak cara lain untuk menguliti kucing ini, ini tidak mungkin yang paling efisien tetapi dari segi sintaks mungkin paling sederhana. Saya sarankan untuk meninjau tautan yang saya posting serta saran duplikat yang dicatat dalam komentar untuk pertanyaan tersebut.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa ukuran kolom int(11) di mysql dalam byte?

  2. Apa yang DELIMITER // lakukan di Pemicu?

  3. Cara Mendapatkan Sisa Menggunakan MOD() di PostgreSQL, MS SQL Server, dan MySQL

  4. Tips Upgrade Percona XtraDB Cluster ke 8.0

  5. MySQL Masukkan Ke Pilih