解释C#里的数据库语句

qq_37798348 2017-05-12 12:42:49
public List<CJGXModel> GetCJGXList(int pageIndex, int pageSize, CJGXModel model)
{
StringBuilder selectCommand = new StringBuilder();
selectCommand.AppendFormat(@" select * from(select row_number() over (order by a.ID) as rowNum,a.* from ( select top({0}) [ID],[StuId],[LessonId],[Grade],[StuName],[LessonName],[Class],[ProfessionName] FROM [PMSDB].[dbo].[CJGX]{1} ) as a) c where c.rowNum>{2}", pageSize * pageIndex, SetWhereCondition(model), pageSize * (pageIndex - 1));
SqlDataReader reader = SqlHelper.ExcuteSql(selectCommand.ToString());
return GetList(reader);
}
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37798348 2017-05-12
  • 打赏
  • 举报
回复
C#代码里SQL语句有点复杂,看不懂,请各位帮忙解释一下
正怒月神 版主 2017-05-12
  • 打赏
  • 举报
回复
select * from(select row_number() over (order by a.ID) as rowNum,a.* from ( select top({0}) [ID],[StuId],[LessonId],[Grade],[StuName],[LessonName],[Class],[ProfessionName] FROM [PMSDB].[dbo].[CJGX]{1} ) as a) c where c.rowNum>{2} 先看内部这句

( select top({0}) [ID],[StuId],[LessonId],[Grade],[StuName],[LessonName],[Class],[ProfessionName] FROM [PMSDB].[dbo].[CJGX]{1} ) as a
很简单说明去某个表里查询前几条(top)字段,取了别名 叫做 a 然后
(select row_number() over (order by a.ID) as rowNum,a.* from ( select top({0}) [ID],[StuId],[LessonId],[Grade],[StuName],[LessonName],[Class],[ProfessionName] FROM [PMSDB].[dbo].[CJGX]{1} ) as a) c
由于已经区别名了。那么简化先来就是
(select row_number() over (order by a.ID) as rowNum,a.* from  a) c
这里就只是给了一个rowNum标识列。并且取了别名 叫做c 最后
select * from(select row_number() over (order by a.ID) as rowNum,a.* from ( select top({0}) [ID],[StuId],[LessonId],[Grade],[StuName],[LessonName],[Class],[ProfessionName] FROM [PMSDB].[dbo].[CJGX]{1} ) as a) c where c.rowNum>{2}
整个句子就是从前面的c表中,通过rowNum来分页,然后通过传入的下标和每页行数,找到分页的内容
  • 打赏
  • 举报
回复
就是执行一条sql语句啊 {0},{1}这类是占位符,对应后面的pageSize * pageIndex之类参数
打老虎zz 2017-05-12
  • 打赏
  • 举报
回复
就是一个分页查询 先是查询前当前页之前所有数据 然后用row_number() over ()根据ID正序排序之后的数据数据做一个排序 然后取当前页的数据
-一个大坑 2017-05-12
  • 打赏
  • 举报
回复
我一般看不懂就调试,然后到数据库执行着看

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧