Select 最大值以及相应的标题?

Select the max value along with a corresponding title?

我有两个表是这样创建和填充的:

create table booklist(title varchar(20), bookid char(2) PRIMARY KEY);
create table numberofcopies (bookid char(2) FOREIGN KEY REFERENCES booklist(bookid), numcopies int);

insert into booklist VALUES ('book 1', 1), ('book 2', 2);
insert into numberofcopies VALUES (1, 5), (2, 10);

我想做的是从 id#2 中获取最大值,在本例中为“10”,然后说出其相应的标题,"book 2." 我的查询是什么 returns是所有书籍的列表,而不仅仅是具有最大值的书籍。我该怎么做呢?到目前为止我的 SQL 查询:

SELECT MAX(numCopies), title AS Title
FROM numberofcopies JOIN booklist ON numberofcopies.bookid=booklist.bookid
GROUP BY Title;

如果你想要最多册的书,你可以加入,排序和限制:

select top (1) bl.*, noc.numcopies
from booklist bl
inner join numberofcopies noc on noc.bookid = bl.bookid
order by noc.numcopies desc

如果你想允许顶部连接,你可以使用 top (1) with ties


编辑:如果您想要max(),一种方法是加入,然后使用相关子查询过滤从 numberofcopies.

中获取最大值 numcopies
select bl.*, noc.numberofcopies
from booklist bl
inner join numberofcopies noc on noc.bookid = bl.bookid
where noc.numcopies = (select max(numcopies) from numberofcopies)

请注意,这需要在 numberofcopies 上再扫描一次,因此这确实比第一个解决方案效率低。

您可以在 GROUP BY 子句后添加:

ORDER BY numCopies DESC
LIMIT 1;

查询将从大到小对值进行排序。将结果限制为 1,您将获得 MAX 值。