2012-05-03 12 views
13

Powiel możliwe:
How to write a (MySQL) “LIMIT” in SQL Server?Co to jest odpowiednik T-SQL składni MySQL LIMIT x, y?

Jak mogę zmienić moje zapytanie z LIMIT Wewnątrz dla SQL Server?

Kod:

SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5; 

Wiele rzeczy nie działają tak po prostu z prośbą o pomoc

i jak mogę zmienić LIMIT 5,10 za przykład? Nie mogę użyć do tego TOP?

+0

redagowany limitem 5,10 – pretyBoy

+0

Brak odpowiedzi poniżej pokazują składnię dla 'SELECT *', więc oto: SELECT TOP (5) * FROM [TableName] ' – K48

Odpowiedz

14

Jak już powiedziałem, mniej niż godzinę temu, musisz użyć TOP! (LIMIT jest używany dla MYSQL)

Więc spróbuj usunąć LIMIT 5 i wykonaj SELECT TOP(5) apretiz.

Spróbuj również dodać zamówienie według (ten sam powód, niż wcześniej).

Zanim zaczniesz zadawać pytania, najpierw wykonaj wyszukiwanie. Link to old question

3

Użyj TOP kluczowe:

SELECT TOP 5 pretiz 
FROM tableApoint WHERE price = '$newprice' 

Korzystanie limit 5, 10 nie jest część standardu SQL i jest dostępna tylko w MySQL.

Możesz użyć ROW_NUMBER() dla SQL jako rozwiązania tymczasowego i otrzymasz te same pożądane wyniki.

SELECT * FROM ( 
    SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10 
2

SQL Server 2005 i powyżej

Jeśli używasz SQL Server 2005 i powyżej, można użyć ROW_NUMBER funkcję przypisać niepowtarzalne numery do swoich wierszy, a następnie wybrać zakres wartości od wyjścia.

Script:

CREATE TABLE table1 
(
    textvalue VARCHAR(10) NOT NULL 
); 

INSERT INTO table1 (textvalue) VALUES 
    ('i'), 
    ('a'), 
    ('e'), 
    ('h'), 
    ('c'), 
    ('l'), 
    ('g'), 
    ('m'), 
    ('d'), 
    ('k'), 
    ('j'), 
    ('f'), 
    ('b'), 
    ('n'); 

;WITH letters as 
(
    SELECT textvalue 
     , ROW_NUMBER() OVER(ORDER BY textvalue) rownum 
    FROM table1 
) 
SELECT textvalue 
FROM letters 
WHERE rownum BETWEEN 6 AND 10; 

Wyjście:

TEXTVALUE 
--------- 
    f 
    g 
    h 
    i 
    j 
16

Począwszy od SQL Server 2012, można napisać

... 
ORDER BY thisColumn, thatColumn 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY 
Powiązane problemy