MySQL - 计算数据库中不同数量的名称实例

时间:2011-11-22 21:31:26

标签: php mysql phpmyadmin

我表格中的一列包含名称。我创建了一个查询:

SELECT COUNT(*) Number, (b_concat_name) Name FROM `js_b_table` GROUP by Name

产生以下内容:

Number | Name
1      | Chris Smith
4      | Fred Savage
2      | Sarah McArthur

如何更新 js_b_table 中包含该行中相应名称( b_concat_name )的 b_name_count 列?

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望js_b_table看起来像这样:

b_concat_name | b_name_count | ... other fields ...
--------------+--------------+---------------------
fred          | 3            | ... other values ...
fred          | 3            | ... other values ...
fred          | 3            | ... other values ...
barney        | 2            | ... other values ...
barney        | 2            | ... other values ...

其中每条记录的b_name_count表示具有相同b_concat_name的记录总数。这是对的吗?

如果是这样,你可以使用:

UPDATE js_b_table AS jbt1
 INNER
  JOIN ( SELECT jbt2.b_concat_name,
                COUNT(*) AS b_name_count
           FROM js_b_table AS jbt2
          GROUP
             BY jbt2.b_concat_name
       ) AS jbt3
    ON jbt3.b_concat_name = jbt1.b_concat_name
   SET jbt1.b_name_count = jbt3.b_name_count
;

答案 1 :(得分:0)

要计算每个名字在表中的时间数:

SELECT 
    count(*) AS number,
    name
FROM USERS
GROUP BY name

答案 2 :(得分:0)

如果我理解正确,您希望为每个用户更新一个列,例如name_count。您可以通过执行以下查询来执行此操作:

UPDATE USERS u
SET u.name_count = 
                   (SELECT count(*)
                    FROM USERS u2 
                    WHERE u2.name = u.name);