为什么我会得到一个“不明确的列名:account.accrued”?

时间:2021-03-23 08:55:07

标签: sqlite

我正在尝试执行 SQLite 查询以更新我的帐户表中的列:

UPDATE account SET accrued = (account.accrued + ((product.intrate/365)*balance))
FROM account
JOIN customer ON customer.custid = account.custid
JOIN product ON product.prodid = account.prodid
WHERE active = 1

我已经试过了,但结果出来了

<块引用>

不明确的列名:account.accrued

UPDATE a SET accrued = (a.accrued + ((p.intrate/365)*balance))
FROM account a
JOIN customer c ON c.custid = a.custid
JOIN product p ON p.prodid = a.prodid
WHERE active = 1

我也试过那个查询,但结果没有这样的表a。如果我从计算中取出应计列,那么余额列也会出现相同的错误。

应计的列仅在一张表中,account

1 个答案:

答案 0 :(得分:0)

这是 SQLite 的正确语法:

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

请注意,您应该使用表名/别名来限定所有列名(除了在 SET 之后更新的列)以避免歧义。

相关问题