SQL,其中x或y但不能同时包含两者

use*_*523 5 sql db2

我有一张桌子,上面列出了供应牛肉或鸡肉的餐馆,这很接近:

Res   Meat
res1  chicken
res1  chicken
res1  beef
res2  chicken
res2  chicken
res3  beef
Run Code Online (Sandbox Code Playgroud)

并且我正在尝试编写一个查询,该查询返回哪些餐厅仅提供鸡肉或牛肉,但不同时提供这两种,而不会从结果中消除重复。

Rob*_*ert 0

试试这个方法:

create table tab
(
   Res   varchar(10), 
   Meat varchar(10)
)

insert into tab ( Res, Meat ) values ( 'res1', 'chicken' )
insert into tab ( Res, Meat ) values ( 'res1', 'chicken' )
insert into tab ( Res, Meat ) values ( 'res1', 'beef' )    
insert into tab ( Res, Meat ) values ( 'res2', 'chicken' )
insert into tab ( Res, Meat ) values ( 'res2', 'chicken' )    
insert into tab ( Res, Meat ) values ( 'res3', 'beef' )

select Res
from (
select distinct Res,Meat
from tab ) T
group by Res
having count(1) = 1
Run Code Online (Sandbox Code Playgroud)