求教一查询语句,谢谢create table test
(
xsID int primary key identity,
Reg_ID int, --会员ID
cpID int, --产品ID
Area_a int, --地区ID
Type_ID int, --类型ID
xs_num int,
xs_total int,
xs_date datetime default(getdate()) --日期
)表如上,我要进行多条件查询,比如说“产品ID”有多种(可多选),并且“地区ID”有多个(可多选),还有可能根据会员ID(单选)或者
类型ID(单选),或者日期(单选)进行查询结果。
我的想法是这样的,能不能用嵌套查询,就是先查出符合“产品ID(可多选)”的结果,再在该结果中根据“地区ID(可多选)”进行查询,再得出结果,再根据上面的结果再进行其他单选的条件进行搜索。请教这样行吗?查询语句该怎么写啊?
(
xsID int primary key identity,
Reg_ID int, --会员ID
cpID int, --产品ID
Area_a int, --地区ID
Type_ID int, --类型ID
xs_num int,
xs_total int,
xs_date datetime default(getdate()) --日期
)表如上,我要进行多条件查询,比如说“产品ID”有多种(可多选),并且“地区ID”有多个(可多选),还有可能根据会员ID(单选)或者
类型ID(单选),或者日期(单选)进行查询结果。
我的想法是这样的,能不能用嵌套查询,就是先查出符合“产品ID(可多选)”的结果,再在该结果中根据“地区ID(可多选)”进行查询,再得出结果,再根据上面的结果再进行其他单选的条件进行搜索。请教这样行吗?查询语句该怎么写啊?
select * from test where cpID in (1001,1002,...) and Area_a in(101,102...)
--还有可能根据会员ID(单选)或者类型ID(单选),或者日期(单选)进行查询结果。
select * from test where Reg_ID = 10001 or xs_date = '2009-03-01'
--用动态语句,举例。
declare @sql varchar(2000)
set @sql='select * from test where 1=1 and 产品条件 and 地区条件 and 会员条件 and 日期条件 or 其他条件'
exec (@sql)
(
xsID int primary key identity,
Reg_ID int, --会员ID
cpID int, --产品ID
Area_a int, --地区ID
Type_ID int, --类型ID
xs_num int,
xs_total int,
xs_date datetime default(getdate()) --日期
)
select * from test where Reg_ID in ('对应的ID') and cpID in('对应的ID')
不需要,在查询的时候用关键字连接好,比如like,=,and,or,逻辑关系处理好,系统会帮你过滤出来的。
你的那种方法不错,但是不懂用,能否详细点介绍一下啊?
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num