SQL - 如何使用COUNT函数连接UPDATE?

时间:2017-03-15 13:06:07

标签: sql sqlite

您好我是SQL的新手,我试图在这里和Tutorial网站上搜索,但不知何故无法找到解决方案。我的问题其实很简单。 我有3个表:推文用户 bon_results

为了得到我的最终.csv-data,我需要在表格中添加一些值'用户'。但是我需要先通过函数创建这些值。我需要执行以下操作:每条推文都有一个favorite_count。我需要将它和SUM BY用户进行汇总,例如:

SELECT user, count(favorite_count) FROM tweets GROUP BY user

要点是我需要将其写入表格'用户'进入专栏' favorite_count'我真的不知道如何连接这两个步骤。我通过这样的UPDATE-Statement尝试了它:

UPDATE users
SET favorite_count=COUNT(favorite_count) FROM tweets
WHERE tweets.user=users.user

我知道" ="之后的部分是胡说八道,但我不知道如何将COUNT函数纳入其中。

建议会很棒。

3 个答案:

答案 0 :(得分:0)

你可以尝试这个兄弟。

Update b
    SET  favorite_count=COunt(favorite_count)
    FROM
    tweets  a
    JOIN
    Users b
    ON a.Column1=b.Column1

答案 1 :(得分:0)

你真的很接近子查询版本:

update users
  set favorite_count = (
    select count(favorite_count) 
    from tweets 
    where tweets.user=users.user
    );

内联接到派生表(子查询)版本:

update u
  set favorite_count = t.favorite_count
from users u
  inner join (
    select user, count(favorite_count) as favorite_count
    from tweets
    group by user
  ) as t
    on u.user = t.user

答案 2 :(得分:0)

您应始终在问题中标记您正在使用的RDBMS。

您可以在大多数数据库中对更新使用相关查询:

update users u 
set favorite_count = (
        select count(favorite_count) 
        from tweets t
        where t.user = u.user
        );

如果您不想要关联,其他解决方案主要是供应商特定的。

在SQL Server中,您可以使用:

update u
set u.favorite_count = t.cnt
from users u join (
    select 
        user, 
        count(favorite_count) as cnt
    FROM tweets 
    GROUP BY user
    ) t on u.user = t.user;

在MySQL中:

update users u join (
    select 
        user, 
        count(favorite_count) as cnt
    FROM tweets 
    GROUP BY user
    ) t on u.user = t.user
set u.favorite_count = t.cnt;