MySQL - подсчет различного количества экземпляров имени в базе данных - PullRequest
2 голосов
/ 23 ноября 2011

Столбец в моей таблице содержит имена. Я создал запрос:

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

Как мне обновить столбец b_name_count в js_b_table , содержащий соответствующее имя ( b_concat_name ) в этой строке?

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Если я правильно понимаю, вы хотите, чтобы 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
;
0 голосов
/ 23 ноября 2011

Если я правильно понимаю, вы хотите обновить столбец, скажем, name_count, для каждого пользователя. Вы можете сделать это, выполнив следующий запрос:

UPDATE USERS u
SET u.name_count = 
                   (SELECT count(*)
                    FROM USERS u2 
                    WHERE u2.name = u.name);
0 голосов
/ 23 ноября 2011

Чтобы подсчитать, сколько раз каждое имя находится в таблице, это:

SELECT 
    count(*) AS number,
    name
FROM USERS
GROUP BY name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...