日期:2014-05-18  浏览次数:20404 次

sql语句问题 很晚了.在线等.帮帮忙
SELECT distinct a.ExceptionInfoId,ROW_NUMBER() OVER(ORDER BY a.ProjectId ASC) AS row 
FROM SysLogExceptionInfo as a
INNER JOIN SysLogProject As b ON a.ProjectId=b.ProjectId 
INNER JOIN AuthorResource AS c ON c.ResourceCode=b.ResourceCode 
INNER JOIN SysLogExceptionTime AS d ON d.ExceptionInfoId=a.ExceptionInfoId 

我省略了一些.大体就是这样
ROW_NUMBER() OVER(ORDER BY a.ProjectId ASC) AS row 
加上这个会显示一个新列用来显示条数

可是我加了这个distinct a.ExceptionInfoId 就不起作用了,比如有一个id 10出现了十次.但是我希望不管出现多少次只显示一次.所以我加了distinct 
有没有什么办法?


------解决方案--------------------
帮顶
------解决方案--------------------
加了distinct 好象在你的排序条件里需要加上a.ExceptionInfoId那才行
------解决方案--------------------
select a.ExceptionInfoId,ROW_NUMBER() OVER(ORDER BY a.ProjectId ASC) AS row from (SELECT distinct a.ExceptionInfoId
FROM SysLogExceptionInfo as a 
INNER JOIN SysLogProject As b ON a.ProjectId=b.ProjectId 
INNER JOIN AuthorResource AS c ON c.ResourceCode=b.ResourceCode 
INNER JOIN SysLogExceptionTime AS d ON d.ExceptionInfoId=a.ExceptionInfoId ) as t
------解决方案--------------------
distinct 返回唯一的结果集,如果你选了N个字段,当N个字段都相同时 
才会被视为相同,而只返加一个条记录..
你现在查询出来的用distinct查出来的结果有第一个字段都相同的吗?
------解决方案--------------------
distinct用法总结
distinct的只显示一次重复出更的值。 
不过这个值出现多少次只显示一次。 
select distinct 字段名1,字段名2 from 表格 order by 字段名1 
distinct 字段名1 意思是只显示一次字段名1显示的是第一次出现的。 
最好和order by 结合使用。可以提高效率
distinct 返回唯一的结果集 
注意,是结果集,如果你选了N个字段,当N个字段都相同时 
才会被视为相同,而只返加一个 
当然,如果N=1的话,情况就会比较明显 
此外,distinct 会对返回的结果集进行排序 所以会大大影响查询效率,大数据集时比较明显
------解决方案--------------------
帮顶,jf