MySQL-左外部联接不更新原始表
我创建了一个玩具数据集,我试图计算每个用户的帖子数量。我似乎得到了正确的计数值,但users表中的count列没有用这些值更新 我是mysql新手,非常困惑!谁能告诉我我做错了什么MySQL-左外部联接不更新原始表,mysql,sql,Mysql,Sql,我创建了一个玩具数据集,我试图计算每个用户的帖子数量。我似乎得到了正确的计数值,但users表中的count列没有用这些值更新 我是mysql新手,非常困惑!谁能告诉我我做错了什么 users: +---------+------+-------+ | user_id | user | pword | +---------+------+-------+ | 1 | Amy | abcd | | 2 | Jess | efgh | | 3 | Lor
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的未回答问题列表中删除。可以!我接受了你的回答。再次感谢!谢谢我试过了,但我有语法错误?不知道为什么?