首页 新闻 搜索 专区 学院

聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-11 12:02

sql sever 查询语句是这样的


select a.*
from (select SourceName,UserName,Row_Number() OVER (partition by SourceName ORDER BY UserName desc)ass
from UserInfo,Source,SourceType,SourceCollect
where UserInfo.UserId=Source.UserId
and Source.SourceTypeId=SourceType.SourceTypeId
and Source.SourceId=SourceCollect.SourceID) a
where ass=(select MAX(ass) where SourceName= a.SourceName) order by a.SourceName

 

应该怎么解决

晓爽的主页 晓爽 | 初学一级 | 园豆:130
提问于:2014-09-11 11:26
< >
分享
最佳答案
0

你这种表连接语法也是炫酷 这个sql语句槽点太多,不知道从哪里吐起,

你先把表连接的方式弄正常点,然后where ass=(子查询)这种表和表的对比,我实在是想不出来

收获园豆:10
吴瑞祥 | 高人七级 |园豆:29364 | 2014-09-11 11:45

刚开始做,我自己都看不下去

具体算是这样的

数据表

收藏品   收藏人

a            李

a            王

b            张

我就是想得到一张表,表里面有每个收藏品被收藏了多少次、类似这样

收藏品     收藏次数

a             2

b             1 

晓爽 | 园豆:130 (初学一级) | 2014-09-11 11:48

@晓爽: 如果只是这个你直接groupby就行了....

select 收藏品,count(1) as 收藏次数 from 数据表

group by 收藏品

吴瑞祥 | 园豆:29364 (高人七级) | 2014-09-11 12:00

@吴瑞祥: 我好心酸啊,我花了半天都不会,你怎么可以这样,豆都给你了

晓爽 | 园豆:130 (初学一级) | 2014-09-11 12:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册