zoukankan      html  css  js  c++  java
  • SqlServer 巧妙解决 多条件组合查询

      开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表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....
     
    有兴趣的,不妨琢磨一下。
     
  • 相关阅读:
    (一)单例模式
    mysql数据库知识
    JavaScript
    Spring整合AspectJ的AOP
    Spring-AOP
    JDK代理和CGLIB代理
    mybatis-dao开发
    mybatis-入门
    CSS2.1
    HTML基础
  • 原文地址:https://www.cnblogs.com/bmate/p/2934913.html
Copyright © 2011-2022 走看看