检索表的最后一行时出错

时间:2014-07-22 04:02:07

标签: mysql sql

我正在尝试从客户表中获取最后一行,同时执行以下查询:

 mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""
 openconnection()
 cmd = New Odbc.OdbcCommand(mystring, myconnection)
 MsgBox(cmd.ExecuteScalar())
 closeconnection()

错误消息如下所示:

"查看与您的MySQL服务器版本对应的手册,以获得正确的语法 使用附近' 1 customer_id FROM customer ORDER BY customer_id DESC'在第1行"

任何人都可以告诉我为什么会出现这种错误,我需要在查询中做些什么更改 得到预期的结果。

4 个答案:

答案 0 :(得分:2)

尝试在mysql中使用LIMIT而不是{/ 1}}

TOP

答案 1 :(得分:2)

这是"少数" (我希望在那一点上有一点反对)T-SQL和MySQL之间的差异。在TSQL中,您可以通过调用SELECT TOP n ...来发现,在MySQL中,您应该使用LIMIT关键字来指定您只需要n行数。

在您的具体情况下,您希望调用与此类似的声明:

SELECT customer_id
FROM customer
ORDER BY customer_id DESC
LIMIT 1

这与你的问题并不相关,但就在我收集你之前你还没有使用LIMIT之后,我会稍微提一下额外的信贷。 LIMIT也是你在MySQL中编写分页表达式的方式,所以如果你发现自己需要,比如只显示10页,你就可以编写如下的查询:

SELECT customer_id
FROM customer
ORDER BY customer_id DESC
LIMIT 0, 10

然后是第二页,

SELECT customer_id
FROM customer
ORDER BY customer_id DESC
LIMIT 10, 10

同样,与你的问题无关,线上的所有内容都应该这样做,但我认为在你的脑海中掌握知识可能是有用的。

答案 2 :(得分:1)

<强> 1

mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""

我使用的是MAX customer_id,因为您的代码是由customer_id

订购的

<强> 2

mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""

我无法理解mystring在没有任何连接的情况下使用了两次因此将其误认为是我将其更改为

mystring = "SELECT MAX(customer_id) FROM customer;"
openconnection()
cmd = New Odbc.OdbcCommand(mystring, myconnection)
MsgBox(cmd.ExecuteScalar())
closeconnection()

答案 3 :(得分:1)

Select Customer_id from Customer Order By Customer_id DESC Limit 0 , 1 ;

如果您只想要第二个最后一个客户ID,请使用

Select * from CustomerB Order By CustomerID DESC Limit 1 , 1 ;

最后第3个位置值

Select * from CustomerB Order By CustomerID DESC Limit 2 , 1 ;