set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATEPROC[dbo].[user_index] ( @PageIndexint, @PageSizeint, @education_idnvarchar(200)=null, @city_idnvarchar(200)=null, @language_idnvarchar(200)=null, @keynvarchar(200)=null, @sexnvarchar(200)=null, @height1nvarchar(200)=null, @height2nvarchar(200)=null, @age1nvarchar(200)=null, @age2nvarchar(200)=null ) as createtable #table (id int,name nvarchar(100),education nvarchar(100),city nvarchar(100),sex nvarchar(100),age nvarchar(100),height nvarchar(100), uid uniqueidentifier) declare@Wherenvarchar(4000) set@Where='' IF@education_idISNOTnullAND@education_id<>'' BEGIN select@Where=@Where+' AND general_education.general_education_id >= '+@education_id+'' END IF@city_idISNOTnullAND@city_id<>'' BEGIN select@Where=@Where+' AND city.place_id = '+@city_id+'' END IF@language_idISNOTnullAND@language_id<>'' BEGIN select@Where=@Where+' AND lang.language_id = '+@language_id+'' END IF@sexISNOTnullAND@sex<>'' BEGIN set@Where=@Where+' AND sex = '''+@sex+'''' END IF@height1ISNOTnullAND@height1<>''and@height2ISNOTnullAND@height2<>'' BEGIN select@Where=@Where+' and (height between '+@height1+' and '+@height2+')' END IF@age1ISNOTnullAND@age1<>''and@age2ISNOTnullAND@age2<>'' BEGIN select@Where=@Where+' and (datediff(year,birthday,getdate()) between '+@age1+' and '+@age2+')' END IF@keyISNOTnullAND@key<>'' BEGIN set@Where=@Where+' and user_work_exp.work_exp_description LIKE ''%'+@key+'%''' END print@where declare@sqlnvarchar(4000) set@sql='insert into #table select distinct user_profile_id,name,general_education.generl_education_desc,city.reg_name,sex, datediff(year,birthday,getdate())as age,height,user_profile.uid from user_profile left join general_education on user_profile.general_education_id=general_education.general_education_id left join user_work_exp on user_work_exp.uid=user_profile.uid left join (select location_id,location.place_id,reg_name from location left join location_place on location.place_id=location_place.place_id)as city on city.location_id=user_profile.location_id left join (select user_language_skill.language_id,user_language_skill.uid,user_language_type.language_name from user_language_skill left join user_language_type on user_language_skill.language_id=user_language_type.language_id) as lang on lang.uid=user_profile.uid where 1=1 '+@Where print@sql exec(@sql) if(@PageIndex=1) begin selecttop (@PageSize) *from #table end else begin selecttop (@PageSize) *from #tablewhere id notin(selecttop(@PageSize*(@PageIndex-1)) id from #table) end