SqlServer 巧妙解决多条件组合查询

 更新时间:2012年11月05日 16:07:00   作者:  
开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表Grade(GradeId,GradeName),班级Class(ClassId,ClassName,GradeId),学员表Student(StuId,StuName,ClassId),现要求可以按年级Id、班级Id、学生名,这三个条件可以任意组合查询学员信息
开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表Grade(GradeId,GradeName),班级Class(ClassId,ClassName,GradeId),学员表Student(StuId,StuName,ClassId),现要求可以按年级Id、班级Id、学生名,这三个条件可以任意组合查询学员信息。

  做法不止一种,这里提供一种巧妙的使用一条查询来实现的办法,我们来写成一个过程,如下:
复制代码 代码如下:

create proc up_select_student_combocondition
@gradeId int,
@classId int,
@stuName nvarchar(10)
as
select s.*,c.classname,g.gradename from student s join class c on s.classid=c.classid join grade g on c.gradeid=g.gradeid
where
(@gradeId=-1 or g.gradeid=@gradeId) and
(@classId=-1 or c.classid=@classId) and
(@stuName='' or s.stuName=@stuName)
go

--那么:
 exec up_select_student_combocondition -1,-1,'' --这是查询所有学员信息
 exec up_select_student_combocondition 2,-1,'' --这是查询年级Id为2的学员信息
exec up_select_student_combocondition -1,4,'' --这是查询班级Id为4的学员信息
exec up_select_student_combocondition 2,4,'' --这是查询年级Id为2且班级Id为4的学员信息
--etc....

相关文章

  • sql server实现分页的方法实例分析

    sql server实现分页的方法实例分析

    这篇文章主要介绍了sql server实现分页的方法,结合实例形式总结分析了SQL Server实现分页功能的常用sql语句,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • SQL Substring提取部分字符串

    SQL Substring提取部分字符串

    SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样
    2009-11-11
  • sqlserver实现更改字段名

    sqlserver实现更改字段名

    本篇文章是对使用sqlserver实现更改字段名进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 跨服务器查询导入数据的sql语句

    跨服务器查询导入数据的sql语句

    此语句可用来将另一服务器中的数据插入到本数据库中的某一表内
    2009-10-10
  • 自动化收集SQLSERVER诊断信息的工具选择及使用介绍

    自动化收集SQLSERVER诊断信息的工具选择及使用介绍

    相信很多人都遇到过当SQLSERVER出现问题的时候,如果想解决的话一般需要你收集一些系统信息和SQLSERVER诊断信息;接下来将介绍下工具的选择及使用,感兴趣的你可不要错过了哈,或许本文的知识点可以帮助到你
    2013-02-02
  • SQL Server 2016 TempDb里的显著提升

    SQL Server 2016 TempDb里的显著提升

    SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0)。这个预览版相比以前的CTP包含了很多不同的提升,此篇文章给大家介绍SQL Server 2016 TempDb里的显著提升,小伙伴一起来了解了解吧
    2015-11-11
  • 修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库

    修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库

    本教程给大家介绍修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,涉及到sqlserver数据库命令的相关知识,对sqlserver数据库命令感兴趣的朋友可以参考下本篇文章
    2015-10-10
  • 由于系统错误 126 (SQL Server),指定驱动程序无法加载

    由于系统错误 126 (SQL Server),指定驱动程序无法加载

    今天下午在给客户安装用友T3标准版时碰到一个非常棘手的问题,MSDE2000数据库和用友T3软件都安装好了,但是打开系统管理的时候提示:AUTOMATION错误,然后将数据库彻底卸载干净,用友通T3软件也彻底卸载干净,重新安装了一下,仍然是这个情况
    2021-03-03
  • SQL Server事务日志已满的三种解决方案

    SQL Server事务日志已满的三种解决方案

    我们安装数据库后,系统会默认把数据库文件和数据库日志文件最大设为500MB,当然你中途可以更改这个限制,当日志文件接近最大值时,继续使用数据库会提示:事务日志已满,本文给出了三种解决方案,需要的朋友可以参考下
    2023-11-11
  • sql下三种批量插入数据的方法

    sql下三种批量插入数据的方法

    本文将介绍三种批量插入数据的方法,需要的朋友可以参考下
    2013-10-10

最新评论