4

我正在使用 PHPMyAdmin 在 Java 和 MySQL 中制作一个小应用程序,一切运行良好,但我的教授说我们必须在 Access 中使用数据库,所以我只是更改了我的类连接并导入了我的数据库。,和其他语句运行良好INSERT,但该语句不运行。SELECTUPDATE

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

我不明白它在 MySQL 中是如何运行良好的,但在 UCanAccess 中它不起作用。

4

1 回答 1

3

我不明白它在 MySQL 中是如何运行良好的,但在 UCanAccess 中它不起作用。

那是因为不同的数据库软件生产商已经采取了不同的方式来实现 SQL 语言,所以为 MySQL 编写的给定 SQL 语句不能保证在 Access、Microsoft SQL Server、Oracle 或任何其他环境下工作。 SQL的“方言”。

UCanAccess 非常努力地遵循 Access SQL 语法。Access SQL 使用TOP n代替LIMIT n,但 Access SQL 也不允许TOP norORDER BY在 UPDATE 查询的主要部分。因此,您需要使用子查询来识别要更新的行的主键值。

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

sql = 
        "UPDATE table1 SET col1=?, col2=? " +
        "WHERE id IN ( " +
            "SELECT TOP 1 id " +
            "FROM table1 " +
            "WHERE col0=? " +
            "ORDER BY col4 DESC, id " +
        ")";
于 2015-05-10T09:27:03.973 回答