2011-09-19 87 views
0

我是一名SQL初学者,我正在按照W3 Schools SQL Exercises的教程进行操作。我试着运行下面的查询,但我得到的错误:使用LIMIT时出现SQL错误

SELECT * FROM Customers LIMIT 5, 5 

错误:

Syntax error in FROM clause.

+0

待办事项你的数据库有一个名为Customers的表? – Marco

+0

@宏:是的,http://www.w3schools.com/sql/sql_tryit.asp –

+0

也许是一个愚蠢的问题。但是你用什么分贝? “限制”由MySql使用,而在sql server中使用“Top” – Iridio

回答

3

你的问题是,你正在使用MySQL的语法,而不是SqlServer的语法 你应该使用

SELECT TOP 5 * FROM Customers 
+0

但我其实只需要其中一个。就像我需要第五个元组。我如何得到这个? –

+0

你必须使用Row_Number。看这篇文章http://www.davidhayden.com/blog/dave/archive/2005/12/30/2652.aspx – Iridio

1

我怀疑你需要使用offset

select * from Customers limit 5 offset 5;

并非所有RDBMSs支持limit m,n语法(我相信MySQL可以,但PostgreSQL不支持)。此外,您可能需要使用order by子句来帮助确保您的查询得到一致的结果(因为数据库通常不关心行或列的顺序,除非您指定):

select * from Customers order by col limit 5 offset 5; 
2

如果你按照你提供的链接的例子...

We will use the Customers table in the Northwind database:

罗斯文是MS SQL产品的样本数据库。而MS SQL不支持使用LIMIT查询。所以那个网站可能使用了某种版本的RDBMS。

尝试运行:

SELECT TOP 5 * FROM customers; 

这让你在结果集中的前5条记录(无序)。不过,它不会跳过任何记录,因为您的LIMIT 5, 5条款会有。

+0

但是,考虑到没有'ORDER BY',所以'ORDER'没有定义,你可能想象它跳过了5个任意记录,因为它唯一会产生影响的时间就是如果表之间有5-10个行。 –

2

你可以看到,他们利用ADODB,所以你应该使用TOP子句:

SELECT TOP 5 * FROM Customers