Получение наибольшего количества по идентификатору - PullRequest
0 голосов
/ 03 июля 2011

У меня есть форум.Я хочу выполнить запрос SQL, чтобы получить пользователя, у которого больше всего блогов.У меня есть 2 таблицы, blogs и users.

Таблица blogs имеет author_id, то есть user_id из таблицы users.

Так вотчто я пытался сделать, но безуспешно:

SELECT b.author_id FROM blogs b 
INNER JOIN users u ON b.author_id = u.user_id 
ORDER BY count(author_id) DESC 
GROUP BY b.author_id 
LIMIT 0,10;

Не могли бы вы помочь мне найти пользователя с большинством сообщений в блогах, или, другими словами, мне нужно найти author_id, который встречается чаще всего вblogs таблица.Спасибо!

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

Для этого вам не нужно присоединяться к users, вам просто нужны GROUP BY и LIMIT:

SELECT author_id
FROM blogs
GROUP BY author_id
ORDER BY COUNT(*) DESC
LIMIT 1

GROUP BY сообщает COUNT, какие группы он должен считать;в этом случае он должен собирать блоги для каждого author_id и считать их как одну группу.

0 голосов
/ 03 июля 2011

Различные части вашего запроса расположены в неправильном порядке.Это должно работать

SELECT b.author_id
FROM blogs b
INNER JOIN users u ON b.author_id = u.user_id
GROUP BY b.author_id
ORDER BY COUNT( b.author_id ) DESC 
LIMIT 0 , 10

См. Документацию MySQL относительно SELECT Синтаксис .

Кроме того, я предполагаю, что ваш пример немного упрощен, так как есть,как уже отмечали другие, в этом случае действительно нет необходимости в объединении.

0 голосов
/ 03 июля 2011
SELECT COUNT(a.*) AS total, a.author_id
FROM blogs AS a
GROUP BY author_id
ORDER BY total DESC
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...