我有两个表,布局如下
人:
person_id,first_name,last_name,gender,birth_date,street,town,county
点赞:
person_id,food
我试图仅使用JOINS(上面的表中“列出不喜欢啤酒的人的名字”)(不允许使用子查询)。
如果我将WHERE子句更改为equals Beer,则以下代码可以正常工作。结果导致两个人都喜欢啤酒。
但是,当我尝试将其更改为不喜欢啤酒的人(这不是真正的餐桌,每个人都喜欢啤酒;)时,问题是它删除了食物偏好与啤酒相同的确切行。但是仍然有喜欢“比萨饼”但喜欢啤酒的人。
该查询将删除啤酒的相关行,但不会删除与此人相关的所有其他行。
如何在不使用子查询的情况下解决此问题?
SELECT
p1.first_name,p1.last_name,l1.food,l1.person_id
FROM
persons AS p1
JOIN likes AS l1
ON p1.person_id = l1.person_id
WHERE l1.food <> "Beer"
例如,Aoife喜欢啤酒,但也喜欢披萨。我希望Aoife因为喜欢啤酒而从查询结果中完全删除。