20

可能重复:
如何在 SQL Server 中编写(MySQL)“LIMIT”?

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

代码:

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

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

以及如何通过示例更改 LIMIT 5,10 ?我不能用 TOP 吗?

4

4 回答 4

26

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

...
ORDER BY thisColumn, thatColumn
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
于 2012-05-03T23:59:55.693 回答
25

正如我不到一小时前所说,您必须使用 TOP !(LIMIT 用于 MYSQL)

所以尝试删除LIMIT 5并执行SELECT TOP(5) apretiz.

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

请在询问之前进行搜索。链接到旧问题

于 2012-05-03T23:22:58.207 回答
6

使用TOP关键字:

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

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

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

SELECT * FROM ( 
  SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10
于 2012-05-03T23:25:24.113 回答
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
于 2012-05-03T23:34:45.167 回答