MySQL-左外部联接不更新原始表

MySQL-左外部联接不更新原始表,mysql,sql,Mysql,Sql,我创建了一个玩具数据集,我试图计算每个用户的帖子数量。我似乎得到了正确的计数值,但users表中的count列没有用这些值更新 我是mysql新手,非常困惑!谁能告诉我我做错了什么 users: +---------+------+-------+ | user_id | user | pword | +---------+------+-------+ | 1 | Amy | abcd | | 2 | Jess | efgh | | 3 | Lor

我创建了一个玩具数据集,我试图计算每个用户的帖子数量。我似乎得到了正确的计数值,但users表中的count列没有用这些值更新

我是mysql新手,非常困惑!谁能告诉我我做错了什么

 users:
 +---------+------+-------+
| user_id | user | pword |
+---------+------+-------+
|       1 | Amy  | abcd  |
|       2 | Jess | efgh  |
|       3 | Lori | ijkl  |
+---------+------+-------+

posts:
+---------+-------------+------+
| post_id | post        | user |
+---------+-------------+------+
|       1 | hi          | Lori |
|       2 | hello       | Jess |
|       3 | hello again | Jess |
|       4 | and again   | Jess |
+---------+-------------+------+

mysql> ALTER TABLE users ADD COLUMN post_count INT;
mysql> SELECT u.user_id, COUNT(p.user) AS post_count FROM users u LEFT JOIN posts p ON u.user LIKE p.user GROUP BY u.user_id;
+---------+------------+
| user_id | post_count |
+---------+------------+
|       1 |          0 |
|       2 |          3 |
|       3 |          1 |
+---------+------------+

mysql> SELECT * FROM users;
+---------+------+-------+------------+
| user_id | user | pword | post_count |
+---------+------+-------+------------+
|       1 | Amy  | abcd  |       NULL |
|       2 | Jess | efgh  |       NULL |
|       3 | Lori | ijkl  |       NULL |
+---------+------+-------+------------+

谢谢

您需要update语句来更新新添加列中的值。请尝试以下操作:

Update usr
set usr.post_count=tbl.post_count
from users usr
inner join
(select  u.user_id,COUNT(p.user) 
AS post_count FROM users u 
LEFT JOIN posts p ON u.user LIKE p.user GROUP BY u.user_id ) tbl
on tbl.user_id=usr.user_id

请尝试以下方法

UPDATE users
JOIN ( SELECT u.user_id AS user_id,
              COUNT( p.user ) AS post_count
       FROM users u
       LEFT JOIN posts p ON u.user LIKE p.user
       GROUP BY u.user_id ) postCountFinder
    ON users.user_id = postCountFinder.user_id
SET users.post_count = postCountFinder.post_count;
SELECT u.user_id,
       COUNT( p.user ) AS post_count
FROM users u
LEFT JOIN posts p ON u.user LIKE p.user
GROUP BY u.user_id;
这个问题需要你的用户列表和从下面获得的帖子数量

UPDATE users
JOIN ( SELECT u.user_id AS user_id,
              COUNT( p.user ) AS post_count
       FROM users u
       LEFT JOIN posts p ON u.user LIKE p.user
       GROUP BY u.user_id ) postCountFinder
    ON users.user_id = postCountFinder.user_id
SET users.post_count = postCountFinder.post_count;
SELECT u.user_id,
       COUNT( p.user ) AS post_count
FROM users u
LEFT JOIN posts p ON u.user LIKE p.user
GROUP BY u.user_id;
。。。并对
用户id
的共享值执行
内部联接
用户
,使用
用户
中的每一行创建一个数据集,并在末尾添加相应的计数

然后,我们使用
SET
命令将
users
中的空
post\u计数设置为相应的连接计数


如果您有任何问题或意见,请随时发表相应的意见。

您需要使用update语句来更新表格。发布您的更新查询。您必须有一个更新查询才能更新添加的列。耶!!非常感谢。这就像一个符咒:-)。谢谢你的解释。不客气,很高兴能帮上忙。请注意,如果某个答案对您的问题的回答令您满意,并且优于您问题的其他答案,您可以通过单击答案顶部旁边的勾号接受该答案。这将给予回答者15分的小奖励,并将该问题从StackOverflow的未回答问题列表中删除。可以!我接受了你的回答。再次感谢!谢谢我试过了,但我有语法错误?不知道为什么?