微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – UcanaccessSQLException:意外令牌:ORDER

我正在使用PHPMyAdmin在Java和MysqL中创建一个小应用程序并且运行正常,但是我的教授说我们必须在Access中使用数据库,所以我只是更改了我的类连接并导入了我的数据库. INSERT,SELECT和其他UPDATE语句运行正常,但此语句不运行.

UPDATE table SET col1=?, col2=? WHERE col0=? ORDER BY col4 DESC LIMIT 1

我无法理解在MysqL中如何运行良好,但使用ucanaccess它不起作用.

解决方法:

I can’t understand how in MysqL it runs fine but with ucanaccess it doesn’t work.

这是因为数据库软件的各种生产者已经采用了稍微不同的方式来实现sql语言,因此为MysqL编写的给定sql语句不能保证在Access,Microsoft sql Server,Oracle或其他任何其他软件下工作. sql的“方言”.

ucanaccess非常努力地遵循Access sql语法. Access sql使用TOP n而不是LIMIT n,但Access sql在UPDATE查询的主要部分中也不允许使用TOP n或ORDER BY.因此,您需要使用子查询来标识要更新的行的主键值.

例如,如果您的表具有名为“id”的主键列,那么您可以这样做

sql = 
        "UPDATE table1 SET col1=?, col2=? " +
        "WHERE id IN ( " +
            "SELECT TOP 1 id " +
            "FROM table1 " +
            "WHERE col0=? " +
            "ORDER BY col4 DESC, id " +
        ")";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐