Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL where x or y but not both

Tags:

sql

db2

I have a table that lists restaurants that serve either chicken of beef, something close to this:

Res   Meat
res1  chicken
res1  chicken
res1  beef
res2  chicken
res2  chicken
res3  beef

and I'm trying to write a query that returns which restaurants only provide chicken OR beef but not both without eliminating duplicates from the result.

like image 749
user2173523 Avatar asked Nov 13 '22 09:11

user2173523


1 Answers

Try this:

CREATE TABLE rest 
    (
     id int auto_increment primary key, 
     Res varchar(20),
     Meat varchar(20) 
    );

INSERT INTO rest
(Res,Meat)
VALUES
('res1','chicken'),
('res1', 'chicken'),
('res1', 'beef'),
("res2", 'chicken'),
("res2", 'chicken'),
( 'res3', 'beef' )

select Res from 
  (select distinct Res,Meat from rest ) test
group by Res
having count(1) = 1

Example on SQLFiddle,

like image 127
sandip Avatar answered Nov 15 '22 11:11

sandip