日期:2014-05-17  浏览次数:20636 次

一个组合查询的问题,请大牛看看
姓名 年龄  民族 学历 科目
刘哲 30   汉族 本科 物理
王勇 20   回族 本科 物理
老舍 40   满族 硕士 数学
李丽 25   苗族 硕士 语文
黄海 30   蒙族 本科 政治

想查询符合“30岁,汉族,本科,物理”其中任意N(1或2或3或4)项的记录(即刘哲,王勇和黄海),这样的SQL语句该怎么写呢?小弟初学,请大哥大姐帮忙,谢谢了。。

------解决方案--------------------

select * from 表名 where 年龄=30 or 民族='汉族' or 学历='本科' or 科目='物理'

------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (姓名 nvarchar(4),年龄 int,民族 nvarchar(4),学历 nvarchar(4),科目 nvarchar(4))
insert into [TB]
select '刘哲',30,'汉族','本科','物理' union all
select '王勇',20,'回族','本科','物理' union all
select '老舍',40,'满族','硕士','数学' union all
select '李丽',25,'苗族','硕士','语文' union all
select '黄海',30,'蒙族','本科','政治'

select * from [TB]

DECLARE @n INT 
DECLARE @i VARCHAR(200)
DECLARE @sql VARCHAR(1000)

SET @n = 2
SET @i  ='30岁,汉族,本科,物理'

SELECT @sql ='SELECT TOP '+CONVERT(VARCHAR,@n)+' * FROM TB WHERE CONVERT(VARCHAR,年龄)+''岁''+民族+学历+科目=REPLACE('''+@i+''','','','''')'

EXEC(@sql)

/*
姓名 年龄 民族 学历 科目
刘哲 30 汉族 本科 物理*/