MySQL, получить->отсортировать->сохранить

Здравствуйте.

Столкнулся с вопросом. Пишу топ. Есть таблица:

tabl1:

login rrr
user ghfgh
user2 fgfg
user fgfgy
user3 ghgh
user2 fgfgа

Мне надо посчитать сколько у кого рядов.
user 2
user2 2
user3 1

отсортировать по количеству и записать\обновить в другую таблицу.

Это действие будет обновлять по крону.

В результате надо получить tabl2:

top login
1 user
2 user2
3 user3
  • Вопрос задан
  • 3104 просмотра
Пригласить эксперта
Ответы на вопрос 3
AloneCoder
@AloneCoder
[object Object]
SELECT COUNT(a.`login`) as amount, a.`login` as login FROM table1 GROUP BY login ORDER BY amount ASC
Ответ написан
FreeTibet
@FreeTibet
dharma supplier
Во-первых, я правильнопонял, что login — это первичный ключ для tabl2? А то он у вас второй в списке, что заставляет меня задуматся.

Во-вторых, я правильно понял, что таблица должна обновлятся, если первичный ключ уже существует?

В общем если я все правильно понял, то могу предложить сделать вот так:


INSERT INTO tabl2 (login, top)
SELECT * FROM (SELECT login, COUNT(*) AS cnt FROM tabl1 GROUP BY login) AS t1
ON DUPLICATE KEY UPDATE top = t1.cnt;
Ответ написан
зачем сортировать перед записью в другую таблицу если сортировать можно на этапе вывода информации из результирующей таблицы?

Откажитесь от промежуточной сортировки и все сразу станет легко
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы