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

如何查询某数据不在特定字段中的记录
如题,但有要求例:
食品供货商         食品
sp1                       food1
sp1                       food2
sp1                       food3
sp2                       food1
sp2                       food3
sp2                       food4
...
若要查不提供food2的食品供应商.
在线等....

------解决方案--------------------
declare @t table(食品供货商 char(4),食品 char(6))
insert @t select 'sp1 ', 'food1 ' union all
select 'sp1 ', 'food2 ' union all
select 'sp1 ', 'food3 ' union all
select 'sp2 ', 'food1 ' union all
select 'sp2 ', 'food3 ' union all
select 'sp2 ', 'food4 '


select 食品供货商
from @t
group by 食品供货商
having sum(case when 食品= 'food2 ' then 1 else 0 end)=0
------解决方案--------------------
declare @t table(食品供货商 char(4),食品 char(6))
insert @t select 'sp1 ', 'food1 ' union all
select 'sp1 ', 'food2 ' union all
select 'sp1 ', 'food3 ' union all
select 'sp2 ', 'food1 ' union all
select 'sp2 ', 'food3 ' union all
select 'sp2 ', 'food4 '

select distinct 食品供货商 from @t a where not exists(
select 1 from @t where 食品供货商=a.食品供货商 and 食品= 'food2 ')
/*
食品供货商
-----
sp2
*/