需要更新mySQL表列中的缺失信息

时间:2012-01-01 22:36:34

标签: php mysql phpmyadmin

我又回来了。一直在搜索和尝试这几个小时......没有找到答案,甚至没有找到正确的问题。

我想使用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  |

谢谢!

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

这应该解决它..请注意代码未测试。您应该回应更新查询的结果,以在执行更新查询之前检查它是否正确

$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());
}

答案 2 :(得分:0)

我认为你只需要按成员统计消息,不是吗?

如果是这样,请使用此SQL:

TRUNCATE TABLE forum_members;
INSERT INTO forum_members(member_id, posts)
 SELECT member_id, COUNT(1) FROM forum_messages GROUP BY member_id;

答案 3 :(得分:0)

试试这个:

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)