我有一个包含两个表的users
和items
的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',我只想根据新更新的项目现在有多少喜欢来更新相关用户的分数
答案 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表之间的更新。