日期:2014-05-18  浏览次数:20628 次

请问这样的SQL语句如何写?(内附例子)
Bread   (表1)
FoodName           Factory
小安琪尔面包     桃李面包厂
毛毛虫面包         桃李面包厂
威化饼干             桃李面包厂
肉松卷                 永新面食

Cookies   (表2)
FoodName             Factory
威化饼干             桃李面包厂
儿童乐饼干         大荣食品厂

因“威化饼干”在表1和表2中都存在,所以在结果中去除。
请问使用SQL语句应该如何才能获取以下结果?
---------------------------
小安琪尔面包     桃李面包厂
毛毛虫面包         桃李面包厂

------解决方案--------------------
declare @Bread table(FoodName varchar(16),Factory varchar(16))
insert into @Bread select '小安琪尔面包 ', '桃李面包厂 '
insert into @Bread select '毛毛虫面包 ', '桃李面包厂 '
insert into @Bread select '威化饼干 ' , '桃李面包厂 '
insert into @Bread select '肉松卷 ' , '永新面食 '

declare @Cookies table(FoodName varchar(16),Factory varchar(16))
insert into @Cookies select '威化饼干 ' , '桃李面包厂 '
insert into @Cookies select '儿童乐饼干 ', '大荣食品厂 '

select
b.*
from
@Bread b
where
exists(select 1 from @Cookies where Factory=b.Factory and FoodName!=b.FoodName)

/*
FoodName Factory
---------------- ----------------
小安琪尔面包 桃李面包厂
毛毛虫面包 桃李面包厂
*/