sql - 这个数据库查询有什么问题?

标签 sql database derby

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

Person(ssn,countryofbirth)
Parents(ssn,fatherbirthcountry)
Employment(ssn, companyID)
Company(companyID, name)

我的任务是这样的:将 fatherbirthcountry 作为输入,输出出生国与 fatherbirthcountry 输入相匹配的人员所在公司的名称。

我假设 fatherbirthcountry 是墨西哥,然后这样做:

SELECT name 
FROM Company 
WHERE companyid = (SELECT companyid  
                   FROM Employment 
                   WHERE ssn = (SELECT ssn 
                                FROM Person 
                                WHERE countryofbirth = 'Mexico');

但它给我一个错误:

>Scalar subquery is only allowed to return a single row.

我完全偏离轨道了吗?有人可以帮忙吗?

最佳答案

问题是您的子查询返回了多个结果,因此您必须使用 where in=

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

关于sql - 这个数据库查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2430629/

相关文章:

java - Java 中不存在捕获表

mysql - 在 SQL 中组合具有不同属性和大小的表

sql - 如何按小时从oracle数据库中获取数据

mysql - 更新具有特定条件和计数器的表中的列(意外结果)

database - 如何在多台服务器上运行关系数据库

java - 确定 Derby 网络服务器运行的是文件系统还是内存数据库

java - 从 Apache Derby 迁移到 MySQL

sql - SAP HANA 从选择中创建表/插入新表

mysql - 可视化管理表数据的简便方法

java - 将数组参数绑定(bind)到 native 查询