直截了当地说,下面是不起作用的MySQL查询:
SELECT S.pub
FROM serves S
WHERE NOT EXISTS ( SELECT L.beer
FROM likes L
WHERE L.drinker = "Joe" AND L.beer NOT IN ( SELECT S.beer
FROM S));此查询的目的是选择提供Joe喜欢的所有啤酒的酒吧。但是,当我尝试执行它时,我得到一个错误,指出表S不存在(由于"SELECT S.beer FROM S“所致)。但我在外部FROM子句中将S别名为serves表的一个实例。我做错了什么?
对我来说,我使用的是NOT EXISTS和NOT IN,这似乎过于复杂。有没有一种更优雅的方式来组织这个查询?
顺便说一句,下面是数据库模式:
LIKES(drinker,beer);
FREQUENTS(drinker,pub);
SERVES(pub,beer,cost);另外,这个问题与我的家庭作业有关,所以请在回答问题时考虑到这一点。谢谢。
发布于 2018-03-05 13:32:31
您应该使用join
SELECT S.pub FROM SERVES S INNER JOIN LIKES L ON L.drinker = "Joe" AND L.beer= S.beer;我认为这会帮助你解决问题,或者
你可以使用这个
SELECT S.pub
FROM serves S
WHERE NOT EXISTS ( SELECT L.beer
FROM likes L
WHERE L.drinker = "Joe" AND L.beer IN ( SELECT SS.beer
FROM serves SS));https://stackoverflow.com/questions/49104001
复制相似问题