为什么我会收到此语法逻辑错误?

adr*_*n38 4 c# sqlite winforms sql-update

我有一个用于连接和显示数据库的基本 Windows 窗体应用程序。我想使用两个表中的信息更新其中一个数据库,

    UPDATE account AS a
    SET accrued = (a.accrued + ((p.intrate/365)*balance))
    FROM customer c JOIN product p
    ON p.prodid = a.prodid
    WHERE c.custid = a.custid AND active = 1
Run Code Online (Sandbox Code Playgroud)

这适用于数据库浏览器

using (SQLiteCommand cmd = connAccount.CreateCommand())
{
    // adds customers details to the database
    cmd.CommandText = @"UPDATE account AS a SET accrued = (a.accrued + ((p.intrate / 365) * balance)) FROM customer c JOIN product p ON p.prodid = a.prodid WHERE c.custid = a.custid AND active = 1";

    cmd.ExecuteNonQuery();
    MessageBox.Show("Daily Accrued Updated");
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,这给了我错误:

System.Data.SQLite.SQLiteException:““FROM”附近的 SQL 逻辑错误:语法错误”

for*_*pas 5

UPDATE...FROM早于 3.33.0 的 SQLite 版本不支持代码中语句的语法。

您可以将旧语法与相关子查询一起使用:

UPDATE account AS a
SET accrued = a.accrued +
    (SELECT p.intrate/365
    FROM customer c JOIN product p
    ON p.prodid = a.prodid
    WHERE c.custid = a.custid) * a.balance
WHERE a.active = 1
Run Code Online (Sandbox Code Playgroud)