34,590
社区成员
发帖
与我相关
我的任务
分享
--方法一(不排除重复)
select a.* from 主表 a, 辅表 b where a.orderid = b.orderid and b.product = 'aaaa'
--方法二(排除重复)
select a.* from 主表 a,
(
select t.* from 辅表 t where product = 'aaaa' and id = (select min(id) from 辅表 where orderid = t.orderid and product = 'aaaa') from 辅表 t
) t
where a.orderid = t.orderid
select a.* from 主表 a, 辅表 b where a.orderid = b.orderid and b.product = 'aaaa'
create table master(OrderID varchar(100), Company varchar(10))
insert master
select '0001','AA'
union select '0002','BB'
create table detail(ID int,OrderID varchar(10), Product varchar(10))
insert detail
select 1 ,'0001', 'aaaa'
union select 2 ,'0001', 'bbbb'
union select 3 ,'0002', 'aaaa'
union select 4 ,'0003', 'cccc'
select * from master m
where exists(select 1 from detail where OrderID=m.OrderID and Product='aaaa')
/*
OrderID Company
---------------------------------------------------------------------------------------------------- ----------
0001 AA
0002 BB
(2 row(s) affected)
*/
drop table master,detail
create table master(OrderID varchar(100), Company varchar(10))
insert master
select '0001','AA'
union select '0002','BB'
create table detail(ID int,OrderID varchar(10), Product varchar(10))
insert detail
select 1 ,'0001', 'aaaa'
union select 2 ,'0001', 'bbbb'
union select 3 ,'0002', 'aaaa'
union select 4 ,'0003', 'cccc'
select * from master m
where exists(select 1 from detail where OrderID=m.OrderID)
/*
OrderID Company
---------------------------------------------------------------------------------------------------- ----------
0001 AA
0002 BB
(2 row(s) affected)
*/
drop table master,detail
declare @a table(orderid char(4),company varchar(10))
declare @b table(id int,orderid char(4),product varchar(10))
insert @a select '0001','AA'
union all select '0002','BB'
insert @b select 1,'0001','aaaa'
union all select 2,'0001','bbbb'
union all select 3,'0002','aaaa'
union all select 4,'0003','ccc'
select a.* from @a a,@b b where a.orderid=b.orderid and b.product = 'aaaa'
/*
orrderid company
--------- ----------------
0001 AA
0002 BB
*/
create table master(OrderID varchar(100), Company varchar(10))
insert master
select '0001','AA'
union select '0002','BB'
create table detail(ID int,OrderID varchar(10), Product varchar(10))
insert detail
select 1 ,'0001', 'aaaa'
union select 2 ,'0001', 'bbbb'
union select 3 ,'0002', 'aaaa'
union select 4 ,'0003', 'cccc'
go
select a.* from master a inner join (select distinct OrderID from detail) b on a.OrderID=b.OrderID
go
drop table master,detail