SQL计数变量并写入另一个表

时间:2013-07-04 10:02:14

标签: mysql sql database

我需要将数据从phpbb中的karma mod传输到smf中的karma。

Phpbb有一个表phpbb_karma,它基本上是一个业力日志。我们需要关注的重要领域是user_id(获得业力的用户)和karma_action(正面或负面的业力,显示为+或 - )。

我需要一个查询来计算所有优缺点,然后将每个唯一user_id的给定结果复制到相应smf_membersid_member字段下的user_id表中在smf)和karma_good(所有的优点)和karma_bad(所有的缺点)。

我认为可以做到,但我不是SQL专家。

2 个答案:

答案 0 :(得分:1)

update smf_members a, 
    (select user_id,
    sum(if(karma_action='+',1,0)) karma_good,
    sum(if(karma_action='-',1,0)) karma_bad
    from phpbb_karma
    group by user_id) b
set a.karma_good=b.karma_good, a.karma_bad = b.karma_bad
where a.id_member = b.user_id;

答案 1 :(得分:0)

How about something like this:

    SELECT DISTINCT user_id, (SELECT COUNT(1) as points
    FROM phpbb_karma
    WHERE action = '+' and k.user_id = user_id), 
    (SELECT COUNT(1) as points
    FROM phpbb_karma
    WHERE action = '-' and k.user_id = user_id)
FROM
    phpbb_karma k

不是最优化的一个,但考虑到这是一次性操作,那么它并不重要。