【发布时间】:2014-02-19 20:23:18
【问题描述】:
这是我的桌子:
create table tableA (id int, type varchar(5))
insert into tableA (ID,TYPE)
values
(101,'A'),
(101,'C'),
(101,'D'),
(102,'A'),
(102,'B'),
(103,'A'),
(103,'C')
create table tableB (id int, type varchar(5), isActive bit)
insert into tableB (id, type, isActive)
Values
(101,'A',1),
(101,'B',0),
(101,'C',0),
(101,'D',1),
(102,'A',1),
(102,'B',0),
(102,'C',1),
(102,'D',1),
(103,'A',1),
(103,'B',1),
(103,'C',1),
(103,'D',1)
现在,我想在这里做两件事:
1) 在tableA 中找到存在于isActive = 0 中但在tableB 中存在的行。 (完成)
select A.* from tableA A
join tableB B
on A.id = B.id and A.type = B.type
where B.isactive = 0
2) 查找tableA 中缺少但isActive = 1 中tableB 中缺少的行。
例如 ID 103,类型 B 在 tableB 中处于活动状态,但在表 A 中缺失。
我不关心 tableA 中 D 类型的存在,因为我只检查 tableA 中的最后一个条目,即 C。
此外,ABCD 是所有 ID 的顺序,它们可以是活动的或不活动的。
感谢您的帮助!
我的努力:(不工作)
select A.* from tableA A
where exists (
select B.* from tableA A
join tableB B
on a.id = b.id
where b.isActive = 1
order by b.id,b.type
)
【问题讨论】:
标签: sql sql-server-2008 select sql-order-by