大家好,我是MYSQL新手
最近在想一個問題但一直解不出來
想問的是
select c.food from a1,b,c where userid="1" and a1.可以吃=b.list and b.note1=c.note1
//結果:可以吃:蘋果、咖啡
select c.food from a2,b,c where userid="1" and a2.不能吃=b.list and b.note1=c.note1
//結果:不能吃:蘋果、牛奶
這兩條搜尋有一個共同的結果"蘋果"
所以想問一下 如果是這樣的狀況
該如何以"不能吃"的結果為主,讓"可以吃"裡的"蘋果"消失?
讓結果呈現為: 可以吃:咖啡 , 不能吃:蘋果、牛奶
table a1
userid 可以吃
1 A
2 C
3 D
4 B
table a2
userid 不能吃
1 D
2 A
3 B
4 C
table b
list note1
A A1
A A2
B B1
B A2
C A1
C B1
D A1
D D1
table c
note1 food
A1 蘋果
A2 咖啡
B1 橘子
D1 牛奶
第一個sql改為
select c.food AS 可以吃
from a1, b, c
where
userid = "1"
and a1.可以吃 = b.list
and b.note1 = c.note1
and not c.food in (select c.food from a2, b, c where userid = "1" and a2.不能吃 = b.list and b.note1 = c.note1);