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

标签 mysql pdo

我正在尝试对 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 - 1M 的连接,它工作正常,但如果我添加它,则不会更新任何行。

查询支持根据cost quantityresources中删除数量总计,并从表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/

相关文章:

php - 使用_GET url链接从mysql数据库中删除一条记录

PHP 5.3.5 PDO FETCH_OBJ 内存泄漏?

php - 使用 pdo 回显 mysql 数据库的最后 10 个结果

mysql - 如果某行存在,如何将 MYSQL 列设置为特定值?

php - 将sql查询转换为数组

php - MySQL:根据另一个表数据选择一个表(用于电子邮件)

php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined PDO

c# - 如何从 asp.net C# 将阿拉伯语插入 mysql

php - mysql select 使用 inet_ntoa 出现 sql 语法错误

php - 清理用户密码