Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klauzula LIMIT MySQL równoważna dla serwera SQL SERVER

W SQL Server 2012 jest wsparcie dla standardu ANSI OFFSET / FETCH składnia. blogowałem o to a oto oficjalny dokument (jest to rozszerzenie ORDER BY ). Twoja składnia przekonwertowana dla SQL Server 2012 będzie wyglądała następująco:

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;

Wcześniej musisz użyć różnych obejść, w tym ROW_NUMBER() metoda. Zobacz ten artykuł oraz dalszą dyskusję . Jeśli nie korzystasz z SQL Server 2012, nie możesz używać standardowej składni ani niestandardowego LIMIT MySQL ale możesz użyć bardziej szczegółowego rozwiązania, takiego jak:

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

Istnieje wiele innych sposobów na skórowanie tego kota, prawdopodobnie nie jest to najskuteczniejszy, ale pod względem składni jest prawdopodobnie najprostszy. Proponuję przejrzeć zamieszczone przeze mnie linki, a także zduplikowane sugestie odnotowane w komentarzach do pytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa dla mysql_real_escape_string bez łączenia się z bazą danych

  2. Użyj relacyjnych baz danych MySQL w Debianie 5 (Lenny)

  3. limit podzapytań mySQL

  4. Jak sprawdzić bazę danych MySQL i rozmiary tabel

  5. Jak używać MySQL z Deno i Oak?