sqlServer 获取 每个分类下 阅读量最高的一本书 每个分类只获取一本
如题
以下为结构
--书籍类别表
CREATE TABLE [dbo].[Category](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL
)go
--所有书籍表
CREATE TABLE [dbo].[Books](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[BookName] [varchar](300) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Author] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[CategoryId] [int] NOT NULL,
[ReadPerson] [bigint] NOT NULL
)
go
获取每个分类下 ReadPerson最大的一本书籍的信息
在线等 高手。。。
------解决方案--------------------
SQL code
select *
from [Category]as a
Cross apply
(select top 1 * from [Books] where a.ID=[CategoryId] order by [ReadPerson] desc ) as b
------解决方案--------------------
or:
SQL code
select a.* from books a inner join(
select categoryid,max(readperson) as readperson from books group by categoryidid)b on a.categoryid=b.categoryid and a.readperson=b.readperson