Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检索表的最后一行时出错_Mysql_Sql - Fatal编程技术网

Mysql 检索表的最后一行时出错

Mysql 检索表的最后一行时出错,mysql,sql,Mysql,Sql,在执行以下查询时,我试图从customer表中获取最后一行: 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() 错误消息如下所

在执行以下查询时,我试图从customer表中获取最后一行:

 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行“按客户id描述使用客户订单中的近1个客户id”

有人能告诉我为什么会发生这个错误,我需要在查询中做哪些更改吗
以获得预期结果。

尝试在mysql中使用LIMIT,而不是像这样使用
TOP

SELECT customer_id FROM customer ORDER BY customer_id DESC LIMIT 1
这是T-SQL和MySQL之间“为数不多”的区别之一(我希望在这一点上会有一些反弹)。在TSQL中,您可以通过调用
selecttopn…
来找到问题所在,而在MySQL中,您应该使用关键字指定您只需要
n
行数

在您的特定情况下,您希望调用类似以下内容的语句:

SELECT customer_id
FROM customer
ORDER BY customer_id DESC
LIMIT 1

这与您的问题没有太大关系,但我想您以前没有使用过
限制,所以我会增加一点额外的积分
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
同样地,与你的问题无关,任何超出界限的事情都应该这样做,但我认为在你的脑海中保留知识可能是有用的。

1.

mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""
mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""
我使用MAX customer\u id,因为从您的代码中,您是按customer\u id订购的

2.

mystring = " mystring = "SELECT TOP 1 customer_id FROM customer ORDER BY customer_id DESC""
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()
如果您只需要倒数第二个客户id,请使用

Select * from CustomerB Order By CustomerID DESC Limit 1 , 1 ;
对于最后第三个位置值

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

我觉得标签被错误地建议改成MySql@SujithKarivelil您是否对我的标记更改有异议或同意,如果您不同意,原因是什么?
TOP 1
是SQL Server语法。使用
limit
代替。Ad@lekha,
mystring=“mystring=”SELECT…
是打字错误吗?如果是的话,我可以改变它,或者你可以,我只是不想改变一些事实上是正确的东西。如果这个查询需要在哪里应用条件,我需要做什么?我可以通过此查询选择主键以外的列吗?@SujithKarivelil。只需在
FROM
ORDER BY
子句之间添加一个
,其中[column]=“value”
,用于过滤,您可以通过在
选择中指定列来选择任何列,或者只需列出
选择*FROM…