首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个数据库查询出了什么问题?

这个数据库查询出了什么问题?
EN

Stack Overflow用户
提问于 2010-03-12 13:11:58
回答 8查看 2.2K关注 0票数 4

我在数据库中有以下表格(我将只列出重要的属性):

代码语言:javascript
复制
Person(ssn,countryofbirth)
Parents(ssn,fatherbirthcountry)
Employment(ssn, companyID)
Company(companyID, name)

我的任务是:给定父亲出生国作为输入,输出其出生国与输入的出生国匹配的公司的名称。

我假装父亲的出生国是墨西哥,然后这样做:

代码语言:javascript
复制
SELECT name 
FROM Company 
WHERE companyid = (SELECT companyid  
                   FROM Employment 
                   WHERE ssn = (SELECT ssn 
                                FROM Person 
                                WHERE countryofbirth = 'Mexico');

但它给了我一个错误:

代码语言:javascript
复制
>Scalar subquery is only allowed to return a single row.

我是不是完全偏离正轨了?有人能帮帮忙吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-12 13:16:21

问题是您的子查询返回多个结果,所以您必须使用where in而不是=

where ssn =更改为where ssn in,将where companyid =更改为where companyid in

票数 6
EN

Stack Overflow用户

发布于 2010-03-12 13:17:14

尝试使用IN关键字,而不是'=‘。

尝试将您的查询更改为

SELECT name FROM Company WHERE companyid IN (选择companyid

代码语言:javascript
复制
                FROM Employment                     WHERE ssn IN (SELECT ssn                                  FROM Person                                  WHERE countryofbirth = 'Mexico');
票数 2
EN

Stack Overflow用户

发布于 2010-03-12 13:25:32

使用:

代码语言:javascript
复制
SELECT c.name
  FROM COMPANY c
  JOIN EMPLOYMENT e ON e.companyid = c.companyid
  JOIN PERSON p ON p.ssn = e.ssn
               AND p.countryofbirth = 'Mexico'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2430629

复制
相关文章

相似问题

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