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

Php MySQL-统计数据库中名称实例的不同数量,php,mysql,phpmyadmin,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_表中包含该行相应名称(b_concat_name)的列b_name\u count。获取每个名称

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

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_表中包含该行相应名称(b_concat_name)的列b_name\u count

获取每个名称在表中的时间计数:

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

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

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

如果我理解正确,您希望
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
;

这是什么意思:“如何使用视图中的计数动态更新另一列中的原始行?”您是指表而不是列吗?“原始”行是什么?你能给出一个具体的例子吗?你能提供表和视图的create语句吗?是的,这个问题真的不清楚,听起来你在问一些不同的问题,这取决于我读的句子对不起,我不经常使用SQL。我会尽力澄清的。是的,这正是我想要实现的。不幸的是,查询生成了以下错误:#1093-无法在中为更新指定目标表“jbt1”clause@Mark:该死,对不起。这是MySQL的一个恼人的限制。其他DBMS更聪明。无论如何,我已经编辑了我的答案,给出了一个在MySQL中可以使用的语句。很抱歉没有开始测试它。