gpt4 book ai didi

mysql - 如何根据另一个表中的值更新数据库记录?

转载 作者:行者123 更新时间:2023-11-29 01:44:34 24 4
gpt4 key购买 nike

我有 USERS 表,其中包含以下字段 _id name number_of_posts

我有 POSTS TABLE,其中包含以下字段 _id user_id post_text

usersposts 之间没有一对多的关系,即一个用户有多个帖子

问题是如何更新 users 表中的 number_of_posts 以便它将保存 posts 表中的帖子数

更新

我的这些表中有大约数百条记录,无法使用触发器来更新 number_of_posts 。

最佳答案

下面给出的示例脚本显示了如何通过使用 LEFT OUTER JOIN 加入 usersposts 表来获取与用户关联的帖子数> 然后在 users 表中的 *_id* 字段上使用 GROUP BY 来获取帖子数。

Click here to view the sample in SQL Fiddle.

查询:

CREATE TABLE users 
(
_id INT NOT NULL
, name VARCHAR(30) NOT NULL
);

CREATE TABLE posts
(
_id INT NOT NULL
, _userid INT NOT NULL
, name VARCHAR(30) NOT NULL
);

INSERT INTO users (_id, name) VALUES
(1, 'user 1'),
(2, 'user 2'),
(3, 'user 3');

INSERT INTO posts (_id, _userid, name) VALUES
(1, 1, 'post 1'),
(2, 1, 'post 2'),
(3, 2, 'post 3');

SELECT u._id
, u.name
, COUNT(p._id) number_of_posts
FROM users u
LEFT OUTER JOIN posts p
ON u._id = p._userid
GROUP BY u._id;

输出:

_ID NAME    NUMBER_OF_POSTS
--- ------ ---------------
1 user 1 2
2 user 2 1
3 user 3 0

关于mysql - 如何根据另一个表中的值更新数据库记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373023/

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