首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中显示不拥有Ferarris的福特车主

如何在SQL中显示不拥有Ferarris的福特车主
EN

Stack Overflow用户
提问于 2010-09-24 17:22:45
回答 2查看 86关注 0票数 0

我正在学习SQL,并且我已经编写了一个返回所有Fords所有者的查询。如何修改查询,使其不返回拥有福特和法拉利的任何人?

代码语言:javascript
复制
SELECT  DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ford' 

添加:

我尝试了下面的代码,看看是否可以生成不拥有Ferarris的人,但它生成了一个空白数据表。你知道它出什么问题了吗?

代码语言:javascript
复制
SELECT  DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE NOT EXISTS
(SELECT  Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ferarri' )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-24 17:52:52

代码语言:javascript
复制
SELECT 

  FORDOWNERS.PID

FROM 

  (SELECT  DISTINCT Owns.Pid
  FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
  WHERE Car.Manufacturer = 'Ford') AS FORDOWNERS

INNER JOIN 

  (SELECT  DISTINCT Owns.Pid
  FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
  WHERE Car.Manufacturer = 'Ferrari') AS FERRARIOWNERS

ON FORDOWNERS.PID = FERRARIOWNERS.PID

或者像这样

代码语言:javascript
复制
SELECT 

  OWNS.PID

FROM 

  Person INNER JOIN Owns ON Person.Pid= Owns.Pid INNER JOIN Car ON Owns.Cid=Car.Cid
  WHERE Car.Manufacturer = 'Ford'
  AND OWNS.PID IN (SELECT  DISTINCT Owns.Pid
                   FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
                   WHERE Car.Manufacturer = 'Ferrari')
票数 0
EN

Stack Overflow用户

发布于 2010-09-24 17:25:52

由于这是标记为家庭作业,这里有一些提示:

  • 查找所有法拉利车主的in (应与原始查询几乎相同)
  • 在子查询(或连接)中使用此查询可将他们从原始查询中排除
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3785715

复制
相关文章

相似问题

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