我表格中的一列包含名称。我创建了一个查询:
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 列?
答案 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);