博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SqlServer 巧妙解决 多条件组合查询
阅读量:5221 次
发布时间:2019-06-14

本文共 942 字,大约阅读时间需要 3 分钟。

  开发中经常会遇得到需要多种条件组合查询的情况,
比如有三个表,年级表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....
 
有兴趣的,不妨琢磨一下。
 
  

转载于:https://www.cnblogs.com/wenyang-rio/archive/2012/10/31/2745525.html

你可能感兴趣的文章
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
WPF移动Window窗体(鼠标点击左键移动窗体自定义行为)
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
hdu - 1226 超级密码 (bfs)
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>