我正在尝试对 2 个表进行更新,这两个表也有一个 View 连接连接了另外两个表。
我没有收到语法错误,但受影响的行为零,所以我想知道逻辑是如何编写的。这就是我尝试过的:
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
的连接,它工作正常,但如果我添加它,则不会更新任何行。
查询支持根据cost quantity
从resources
中删除数量总计,并从表money中删除
字段 1
q
。
我该如何解决这个问题=/?
最佳答案
您的查询中的 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 演示
关于mysql - 使用 3 个连接在一个查询中更新 2 个不同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850076/