在一个查询中使用3个连接更新2个不同的表?

时间:2013-07-25 05:53:42

标签: mysql pdo

我正在尝试对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中移除数量总计,并从表1字段money中删除q

我该如何解决这个= /?

1 个答案:

答案 0 :(得分: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 演示