读书人

sql语句有关问题 很晚了.帮帮忙

发布时间: 2012-01-26 19:40:46 作者: rapoo

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

读书人网 >asp.net

热点推荐