我正在尝试对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
的联接,它可以正常工作,但如果我添加它,则每次都不会更新任何行。
该查询支持根据resources
从cost quantity
中移除数量总计,并从表1
字段money
中删除q
。
我该如何解决这个= /?
答案 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 演示