gpt4 book ai didi

mysql - 如何通过中介从表中获取数据

转载 作者:行者123 更新时间:2023-11-28 23:53:53 25 4
gpt4 key购买 nike

我有三个表:

// users
+----+------+------------+
| id | name | reputation |
+----+------+------------+

// posts
+----+-------+---------+
| id | title | user_id |
+----+-------+---------+

// votes
+----+---------+---------+
| id | user_id | post_id |
+----+---------+---------+

注意 votes中的user_id是属于投票的人。但是 posts 表中的 user_id 属于那个帖子的作者。

所以当他的评论获得赞成票时,我想给帖子的所有者 +5 代表。

示例:userA 对帖子(由 userB 撰写)投赞成票时,我想运行此程序:

update users set reputatuin=reputation+5 where id = {how get the id of userB}

现在我想知道,我应该如何获取userB(写的帖子所有者)id?

最佳答案

UPDATE 语句中,您必须使用 MySQL's multi-table UPDATE syntax 通过 posts 连接到 votes 表.

如果您想通过定位新投票的 votes.id 进行更新,请在 WHERE 子句中使用它。

UPDATE 
users
INNER JOIN posts ON users.id = posts.user_id
INNER JOIN votes ON votes.post_id = posts.id
SET
users.reputation = users.reputation + 5
WHERE votes.id = {vote id to update}

如果您的代码已经知道投票帖子的 posts.id,则无需加入 votes 表,您可以使用 usersposts

UPDATE 
users
INNER JOIN posts ON users.id = posts.user_id
SET
users.reputation = users.reputation + 5
WHERE posts.id = {post id of new vote}

可以使用 WHERE 子句中的子查询轻松完成此查询。

UPDATE users
SET reputation = reputation + 5
WHERE
id = (SELECT user_id FROM posts WHERE post_id = {post id of new vote})

关于mysql - 如何通过中介从表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32122827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com