2016-01-13 2 views
1

У меня есть таблица с неповторимым столбцом auth_id. Мне нужно выбрать значение auth_id с максимальным количеством записей.Выберите строку с максимальным значением из таблицы

SELECT auth_id, cnt 
FROM (SELECT auth_id, COUNT(auth_id) AS cnt 
FROM articles_authors 
GROUP BY auth_id) articles_num 
WHERE cnt = (SELECT MAX(articles_num.cnt)) 

Вот пример данных:

auth_id article_id 
1    2 
1    1 
1    3 
2    2 
3    1 
3    2 

И выход:

auth_id cnt 
1   3 

Но SQL не видит псевдоним таблицы articles_num. Как сделать это предложение WHERE с помощью этого псевдонима?

+2

предоставить некоторые примеры данных и ожидаемый результат из них. –

ответ

2

Используя условие limit было бы намного проще - вы просто заказать запрос по некоторому полю, а потом просто взять первую строку:

SELECT auth_id, COUNT(auth_id) AS cnt 
FROM  articles_authors 
GROUP BY auth_id 
ORDER BY 2 DESC 
LIMIT 1 
+0

Это работает, но что, если у нас есть много auth_id с максимальным количеством записей? – ihjn

1

Заказать ваши данные в порядке убывания в вашем внутреннем запросе, то просто взять первый один:

SELECT auth_id, cnt 
FROM (
    SELECT auth_id, COUNT(auth_id) AS cnt 
    FROM articles_authors 
    GROUP BY auth_id 
    ORDER BY cnt DESC 
    ) 
LIMIT 1 
0

Попробуйте это .......

select auth_id, count(auth_id) as cnt 
from articles_authors 
group by auth_id 
order by cnt DESC 
limit 1; 

Дайте мне знать, если это разрешает ваш вопрос

1

Если я правильно понимаю, вы на самом деле хотите, чтобы получить одну строку макс графа:

SELECT auth_id, count(auth_id) as cnt 
FROM articles_authors 
GROUP BY 1 
ORDER BY 2 DESC 
LIMIT 1 

Если более чем один auth_id имеют одинаковую максимальную счет, мы необходимо обновить этот SQL-код

Смежные вопросы