mysql更新相关行

时间:2014-06-28 17:49:32

标签: mysql sql sql-update foreign-key-relationship

我有一个包含两个表的usersitems的mysql数据库。我想使用UPDATE更新items(我可以做)的行上的变量,然后更新users中相关行的变量。

我对使用外键更新感到困惑,这可能在一个查询中吗?我该怎么做?

修改

目前我在php中这样做:

//execute the SQL query and return records
$result = mysqli_query($dbhandle, "UPDATE items SET likes = likes + 1 WHERE id='$_POST[id]'")
  or die("Unable to query");

// update user score
$score = mysqli_query($dbhandle, "UPDATE users u JOIN items i ON u.id = i.user_id SET u.score = u.score + i.likes")
    or die("Unable to update user score");

项目中的每一行都有一个外键' user_id',我只想根据新更新的项目现在有多少喜欢来更新相关用户的分数

1 个答案:

答案 0 :(得分:1)

您可以同时在桌面上Join执行UPDATE(如下所示)

UPDATE users u 
    JOIN items i ON u.some_col = i.some_col
SET u.column1 = i.column1 

此外,如果您在表之间定义了foreign key关系,那么您可以使用ON UPDATE CASCADE(您必须在创建表时进行定义或执行ALTER并更改架构)它将级联Main和Derived表之间的更新。