我有这张表:
Profile:
ID NAME
---------
1 COMP
2 SEGM
3 PERS
Category:
ID NAME
---------
1 NEWS
2 IMGS
3 PEPL
Content:
ID NAME IDCAT
---------------
1 HI 1
2 CAT 2
3 DOG 2
4 MAN 3
5 TUT 2
Access:
ID IDCONT IDPRF
--------------
1 3 1
2 5 2
3 3 2
4 2 2
5 1 1
6 4 2
7 1 3
我需要一个帮助来构建一个SQL(我正在使用SQL Server),以便在访问时知道每个配置文件访问哪种类别的内容。我需要这样的东西:
IDPRF NAMECAT
---------------
1 NEWS
2 IMGS
3 NEWS
答案 0 :(得分:1)
如果我理解正确,这是一个聚合查询,您需要最高计数。您可以使用SQL Server中的row_number()
来获取此信息:
select idprf, c.name
from (select a.idprf, c.name, count(*) as cnt,
row_number() over (partition by a.idprof order by count(*) desc) as seqnum
from access a join
content co
on a.idcont = co.id join
category c
on co.idcat = c.id
group by a.idprf, cname
) ac
where seqnum = 1