SqlServer 巧妙解決多條件組合查詢
更新時(shí)間:2012年11月05日 16:07:00 作者:
開發(fā)中經(jīng)常會(huì)遇得到需要多種條件組合查詢的情況,比如有三個(gè)表,年級(jí)表Grade(GradeId,GradeName),班級(jí)Class(ClassId,ClassName,GradeId),學(xué)員表Student(StuId,StuName,ClassId),現(xiàn)要求可以按年級(jí)Id、班級(jí)Id、學(xué)生名,這三個(gè)條件可以任意組合查詢學(xué)員信息
開發(fā)中經(jīng)常會(huì)遇得到需要多種條件組合查詢的情況,比如有三個(gè)表,年級(jí)表Grade(GradeId,GradeName),班級(jí)Class(ClassId,ClassName,GradeId),學(xué)員表Student(StuId,StuName,ClassId),現(xiàn)要求可以按年級(jí)Id、班級(jí)Id、學(xué)生名,這三個(gè)條件可以任意組合查詢學(xué)員信息。
做法不止一種,這里提供一種巧妙的使用一條查詢來實(shí)現(xiàn)的辦法,我們來寫成一個(gè)過程,如下:
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,'' --這是查詢所有學(xué)員信息
exec up_select_student_combocondition 2,-1,'' --這是查詢年級(jí)Id為2的學(xué)員信息
exec up_select_student_combocondition -1,4,'' --這是查詢班級(jí)Id為4的學(xué)員信息
exec up_select_student_combocondition 2,4,'' --這是查詢年級(jí)Id為2且班級(jí)Id為4的學(xué)員信息
--etc....
做法不止一種,這里提供一種巧妙的使用一條查詢來實(shí)現(xiàn)的辦法,我們來寫成一個(gè)過程,如下:
復(fù)制代碼 代碼如下:
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,'' --這是查詢所有學(xué)員信息
exec up_select_student_combocondition 2,-1,'' --這是查詢年級(jí)Id為2的學(xué)員信息
exec up_select_student_combocondition -1,4,'' --這是查詢班級(jí)Id為4的學(xué)員信息
exec up_select_student_combocondition 2,4,'' --這是查詢年級(jí)Id為2且班級(jí)Id為4的學(xué)員信息
--etc....
您可能感興趣的文章:
- SQLServer只賦予創(chuàng)建表權(quán)限的全過程
- 一文教會(huì)你在sqlserver中創(chuàng)建表
- 淺析SQL Server授予了CREATE TABLE權(quán)限但是無法創(chuàng)建表
- sql server 2000中禁止創(chuàng)建表(權(quán)限設(shè)置方法)
- SQL Server 2008 阻止保存要求重新創(chuàng)建表的更改問題的設(shè)置方法
- SqlServer使用 case when 解決多條件模糊查詢問題
- sqlserver和oracle中對(duì)datetime進(jìn)行條件查詢的一點(diǎn)區(qū)別小結(jié)
- SQL?Server數(shù)據(jù)庫創(chuàng)建表及其約束條件的操作方法
相關(guān)文章
sql server實(shí)現(xiàn)分頁的方法實(shí)例分析
這篇文章主要介紹了sql server實(shí)現(xiàn)分頁的方法,結(jié)合實(shí)例形式總結(jié)分析了SQL Server實(shí)現(xiàn)分頁功能的常用sql語句,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03跨服務(wù)器查詢導(dǎo)入數(shù)據(jù)的sql語句
此語句可用來將另一服務(wù)器中的數(shù)據(jù)插入到本數(shù)據(jù)庫中的某一表內(nèi)2009-10-10自動(dòng)化收集SQLSERVER診斷信息的工具選擇及使用介紹
相信很多人都遇到過當(dāng)SQLSERVER出現(xiàn)問題的時(shí)候,如果想解決的話一般需要你收集一些系統(tǒng)信息和SQLSERVER診斷信息;接下來將介紹下工具的選擇及使用,感興趣的你可不要錯(cuò)過了哈,或許本文的知識(shí)點(diǎn)可以幫助到你2013-02-02修改SQL-SERVER數(shù)據(jù)庫表結(jié)構(gòu)的SQL命令附sql命令行修改數(shù)據(jù)庫
本教程給大家介紹修改SQL-SERVER數(shù)據(jù)庫表結(jié)構(gòu)的SQL命令附sql命令行修改數(shù)據(jù)庫,涉及到sqlserver數(shù)據(jù)庫命令的相關(guān)知識(shí),對(duì)sqlserver數(shù)據(jù)庫命令感興趣的朋友可以參考下本篇文章2015-10-10由于系統(tǒng)錯(cuò)誤 126 (SQL Server),指定驅(qū)動(dòng)程序無法加載
今天下午在給客戶安裝用友T3標(biāo)準(zhǔn)版時(shí)碰到一個(gè)非常棘手的問題,MSDE2000數(shù)據(jù)庫和用友T3軟件都安裝好了,但是打開系統(tǒng)管理的時(shí)候提示:AUTOMATION錯(cuò)誤,然后將數(shù)據(jù)庫徹底卸載干凈,用友通T3軟件也徹底卸載干凈,重新安裝了一下,仍然是這個(gè)情況2021-03-03