什么是MySQL语法LIMIT x,y的T-SQL等价物?

时间:2012-05-03 23:20:49

标签: sql sql-server database tsql

  

可能重复:
  How to write a (MySQL) “LIMIT” in SQL Server?

如何使用LIMIT Inside为SQL-Server更改查询?

代码:

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

很多事情都没有起作用所以只是寻求帮助

我怎么能通过例子改变LIMIT 5,10?我不能用TOP吗?

4 个答案:

答案 0 :(得分:21)

从SQL Server 2012开始,您可以编写

...
ORDER BY thisColumn, thatColumn
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

答案 1 :(得分:16)

正如我在不到一小时前说的那样,你必须使用TOP! (LIMIT用于MYSQL)

因此,请尝试删除LIMIT 5并执行SELECT TOP(5) apretiz

另外,尝试按顺序添加顺序(原因与以前相同)。

请在询问之前进行搜索。 Link to old question

答案 2 :(得分:3)

使用TOP关键字:

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

使用LIMIT 5,10不是SQL标准的一部分,仅在MySQL中可用。

您可以将ROW_NUMBER()用作SQL作为临时解决方案,并为您提供相同的所需输出。

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

答案 3 :(得分: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