[英]Need to update missing info in mySQL table column
我又回来了 一直在搜索并尝试了几个小时……找不到答案,甚至没有找到正确的问题。
我想修复使用phpMyAdmin中的查询从内存(以及Works中的成员列表)中重新创建的崩溃表。 我需要填充每个成员的帖子总数。
forum_messages
member_id | message |
--------------------
1 | Hello |
3 | One, Two, Three |
1 | Howdy! |
2 | Here we are again! |
2 | To answer your question... |
forum_members
member_id | posts |
--------------------
1 | 0 |
2 | 0 |
在forum_messages中,forum_members应该最终看起来像这样:
forum_members
member_id | posts |
--------------------
1 | 2 |
2 | 2 |
3 | 1 |
谢谢!
使用INSERT SELECT查询,您应该能够重建在forum_members表中丢失的数据。
这将返回每个member_id的消息数:
SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
将其与INSERT查询进行整理会将其放入表中,而不是像通常在SELECT查询中那样显示数据。
INSERT INTO forum_members (member_id, posts) SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
这应该可以解决。.请注意,代码未测试 。 您应该在执行更新查询之前,回显更新查询的结果以检查其是否正确。
$get_memberid = "SELECT distinct(member_id) as member_id FROM forum_members;";
$Rget_memberid = mysql_query($get_memberid) or die(mysql_error());
while($row_get_memberid = mysql_fetch_array($Rget_memberid)) {
$arr_get_memberid[] = array( "member_id" => $row_get_memberid['member_id'] );
}
for ($c = 0; $c < count($arr_get_memberid); $c++){
$update_count = "UPDATE forum_members set posts = (SELECT count(member_id) from forum_messages where member_id = '".$arr_get_memberid[$c]['member_id']."') where member_id = '".$arr_get_memberid[$c]['member_id']."';";
$Rupdate_count = mysql_query($update_count) or die(mysql_error());
}
我认为您只需要按成员数统计邮件,不是吗?
如果是这样,请使用以下SQL:
TRUNCATE TABLE forum_members;
INSERT INTO forum_members(member_id, posts)
SELECT member_id, COUNT(1) FROM forum_messages GROUP BY member_id;
尝试这个 :
UPDATE forum_members SET posts = (SELECT COUNT(*) FROM forum_messages where forum_messages.member_id = forum_members.member_id GROUP BY forum_messages.member_id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.