2012-05-03 44 views
13

可能重複:
How to write a (MySQL) 「LIMIT」 in SQL Server?什麼是MySQL語法LIMIT x,y的T-SQL等價物?

如何更改我的查詢與LIMIT裏面的SQL-服務器?

代碼:

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

很多事情不工作,所以只是要求幫助

,以及如何通過例子我可以改變LIMIT 5,10?我不能使用TOP嗎?

+0

編輯的LIMIT 5,10 – pretyBoy

+0

無以下答案顯示了語法'SELECT *',所以這裏是:'SELECT TOP(5)* FROM [TableName]' – K48

回答

14

正如我所說不到一個小時前,你必須使用TOP! (LIMIT用於MYSQL)

因此請嘗試刪除LIMIT 5並執行SELECT TOP(5) apretiz

此外,嘗試添加順序(與以前相同的原因)。

請在事情發生前請先搜索。 Link to old question

3

使用TOP關鍵字:

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

使用LIMIT 5,10不是SQL標準的一部分,而且只在MySQL。

您可以使用SQL的ROW_NUMBER()作爲臨時解決方案,並會得到相同的期望輸出。

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

SQL Server 2005和以上

如果您在使用SQL Server 2005及以上版本,你可以使用ROW_NUMBER功能分配唯一的編號,你行,然後選擇從輸出值的範圍。

腳本

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; 

輸出

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

由於SQL Server 2012中,你可以寫

... 
ORDER BY thisColumn, thatColumn 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY 
相關問題