读书人

求一数据库查询语句只有一张表,该如

发布时间: 2012-03-23 12:06:21 作者: rapoo

求一数据库查询语句,只有一张表
求一数据库查询语句,只有两张表

SQL code
TableAID name1  刘2  王3  李4  吴5  陈TableBID No Comment1  1  AB1  2  AA1  5  AD2  3  AG2  6  AF3  5  DD4  1  MM4  5  KL

我想取出No只有1,5的数据:也就是ID=4的 4 吴 那条数据。
PS:ID=1的那个因为多了No=2所以不要;ID=2的那个就没有1,5,且多了3,6,所以也不要;ID=3的那个少了1,所以不要;
ID=4,刚好只有1,5,取出;ID=5,在TableB里没数据,所以不要。

[解决办法]
SQL code
select a.*from table ajoin(select id from tableb where no in(1,5) having count(distinct no)=2) bon a.id=b.id
[解决办法]
SQL code
create table TableA(ID int,name varchar(10))insert into tablea values(1 , '刘')insert into tablea values(2 , '王')insert into tablea values(3 , '李')insert into tablea values(4 , '吴')insert into tablea values(5 , '陈')create table TableB(ID int,No int,Comment varchar(10))insert into tableb values(1 , 1 , 'AB')insert into tableb values(1 , 2 , 'AA')insert into tableb values(1 , 5 , 'AD')insert into tableb values(2 , 3 , 'AG')insert into tableb values(2 , 6 , 'AF')insert into tableb values(3 , 5 , 'DD')insert into tableb values(4 , 1 , 'MM')insert into tableb values(4 , 5 , 'KL')goselect a.* from tablea a ,(  select distinct id from tableb where no = 1  union all  select distinct id from tableb where no = 5) b where a.id = b.id and b.id not in (select id from tableb where no not in (1,5))group by a.id , a.name having count(1) = 2drop table tablea , tableb/*ID          name       ----------- ---------- 4           吴(所影响的行数为 1 行)*/
[解决办法]
go
create table #a(
ID int,
name varchar(2)
)
go
insert #a
select 1,'刘' union all
select 2,'王' union all
select 3,'李' union all
select 4,'吴' union all
select 5,'陈'

go
create table #b(
ID int,
Num int,
Comment varchar(2)
)
go
insert #b
select 1,1,'AB' union all
select 1,2,'AA' union all
select 1,5,'AD' union all
select 2,3,'AG' union all
select 2,6,'AF' union all
select 3,5,'DD' union all
select 4,1,'MM' union all
select 4,5,'KL'


select * from #a where ID in
(select ID from
(select distinct ID from #b where Num = 1
union all
select distinct ID from #b where Num = 5)t
where ID not in (select ID from #b where Num not in (1,5))
group by ID having count(1)=2)

读书人网 >SQL Server

热点推荐