1

我正在尝试对 2 个表进行更新,该表还具有连接另外两个表的视图连接。

我没有收到语法错误,但受影响的行为零,所以我想知道逻辑是如何编写的。这就是我尝试过的:

UPDATE resources R
    INNER JOIN cost C
    ON R.rid=R.rid          

    INNER JOIN users U
    ON R.uid=U.uid

    INNER JOIN money M
    ON M.bid=C.bid

   SET R.q = R.q - C.q, M.q = M.q - 1
   WHERE C.bid=? AND U.uid= ?

如果我删除这部分查询M.q = M.q - 1并且M它的连接工作正常,但如果我添加它,那么每个行都不会更新。

该查询支持从表格字段resourcescost quantity删除数量总计。1moneyq

我该如何解决这个=/?

4

1 回答 1

2

您的查询中的 JOIN 条件存在问题。马上你有R.rid=R.rid这不可能是正确的。

现在,从您的示例数据中推断出您的查询应该是这样的

UPDATE resources R JOIN costs C
    ON R.uid = C.rid JOIN users U
    ON R.uid = U.uid JOIN money M
    ON M.uid = C.rid
   SET R.q = R.q - C.q, M.q = M.q - 1
 WHERE C.bid = 3 
   AND U.uid = 1

这是SQLFiddle演示

于 2013-07-25T06:55:14.270 回答