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中可以使用的语句。很抱歉没有开始测试它。