Mysql使用max(count/group by)和join

Mysql使用max(count/group by)和join,mysql,count,group-by,max,Mysql,Count,Group By,Max,我有两个表格(标题作者、作者) 作者中有名字 标题作者(计数)中书面书籍的数量和内容 我想通过在titleauthor中使用max in counts来获得authors中的作者姓名。我想我用错命令了。。有人能纠正这一点吗 use pubs; select (a.au_fname," ", a.au_lname) as Author_Name from authors a join titleauthor ta on a.au_id = ta.au_id where max(count(*))

我有两个表格(标题作者、作者) 作者中有名字

标题作者(计数)中书面书籍的数量和内容

我想通过在titleauthor中使用max in counts来获得authors中的作者姓名。我想我用错命令了。。有人能纠正这一点吗

use pubs;

select (a.au_fname," ", a.au_lname) as Author_Name
from authors a
join titleauthor ta
on a.au_id = ta.au_id
where max(count(*)) group by ta.au_id;   // or where max(count(*) group by ta.au_id);

如果您只希望一位作者拥有最多的标题,那么您可以尝试以下方法:

SELECT CONCAT(a.au_fname, ' ', a.au_lname) AS Author_Name
FROM authors a
INNER JOIN titleauthor ta
    ON a.au_id = ta.au_id
GROUP BY a.au_id
ORDER BY COUNT(*) DESC
LIMIT 1

如果大多数标题的作者之间可能存在平局,那么可以指定第二列来打破平局。如果您只想报告一位作者,这将非常有效。如果你真的想报告所有的作者,那么我们可以使用子查询。首先,你需要
选择中的字段也出现在
分组中
然后,您可以通过
计数递减和
限制为1来排序

select concat(a.au_fname," ", a.au_lname) as Author_Name
from authors a
    join titleauthor ta
    on a.au_id = ta.au_id
group by a.au_fname, a.au_lname
order by count(*) desc
limit 1

如果两个不同的作者碰巧有相同的名字和姓氏,这就有一个潜在的问题。不太可能发生,但它可能发生。谢谢!我想我需要在这本书中使用max:P