如何在UPDATE mysql查询中使用JOIN

时间:2015-11-14 12:51:59

标签: mysql pdo

您好我想用JOIN将其绑定到一个查询。 这是如何工作的:

Db::bind("uid", strip_tags($userid));
DB::bind("user_id", strip_tags($refer));
Db::bind("points_earn", strip_tags($points_earn));
Db::bind("points_refer", strip_tags($points_refer));
Db::query("UPDATE referrals SET `points_earn` = :points_earn WHERE new_id = :uid");
Db::query("UPDATE users SET `points` = `points` + :points_refer WHERE id = :user_id");

我的想法,但不是工作。

Db::query("UPDATE referrals r JOIN users u ON r.user_id = u.id SET `r.points_earn` = :points_earn WHERE r.new_id = :uid AND `u.points` = `u.points` + :points_refer WHERE u.id = :user_id");

有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

您的语法是正确的,但后面的标记是错误的,每个SELECT只有一个WHERE

UPDATE referrals r JOIN
       users u
       ON r.user_id = u.id
   SET r.points_earn = :points_earn
   WHERE r.new_id = :uid AND u.points = u.points + :points_refer AND
         u.id = :user_id;

反引号的问题在于以下内容完全不同:

`r.points_earn`
`r`.`points_earn`

第一个引用名为" r.points_earn"的列。第二个是指" points_earn"列" r"。反叛是不必要的,所以你可以删除它们。