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 值。
我有两个表是这样创建和填充的:
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 值。