首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL相关查询混淆

问MySQL相关查询混淆
EN

Stack Overflow用户
提问于 2018-03-05 13:30:30
回答 1查看 52关注 0票数 1

直截了当地说,下面是不起作用的MySQL查询:

代码语言:javascript
复制
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,这似乎过于复杂。有没有一种更优雅的方式来组织这个查询?

顺便说一句,下面是数据库模式:

代码语言:javascript
复制
LIKES(drinker,beer);
FREQUENTS(drinker,pub);
SERVES(pub,beer,cost);

另外,这个问题与我的家庭作业有关,所以请在回答问题时考虑到这一点。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-03-05 13:32:31

您应该使用join

代码语言:javascript
复制
SELECT S.pub FROM  SERVES S INNER JOIN LIKES L ON L.drinker = "Joe" AND L.beer= S.beer;

我认为这会帮助你解决问题,或者

你可以使用这个

代码语言:javascript
复制
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));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49104001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档