我目前正在尝试在NetBeans中显示多个电话号码,但似乎我的数据库的SQL查询远非完美。它总是告诉我:单行选择多行。
代码允许我获得一个号码,如果它只属于一个人,但是有一个号码属于三个人,我需要所有这三个号码出现。提前谢谢!
String telephoneQuery3 = "select * from HAS_COMPETENCE where aid = (select aid from EMPLOYEE where telephone = '" + telephone + "')";
答案 0 :(得分:0)
您应该使用=
时使用in
:
select *
from HAS_COMPETENCE hc
where hc.aid in (select e.aid from EMPLOYEE e where e.telephone = '" + telephone + "')
问题是子查询返回多个值。使用=
,引擎只需要一个值。 in
修复此问题,因此需要一个值列表。
我还在查询中添加了表别名。这标识了字段来自哪些表 - 以避免混淆查看查询的人。
答案 1 :(得分:0)
与=
比较只有在右边的表达式返回一行时才有效,insetad使用IN
select * from HAS_COMPETENCE where aid IN (select aid from EMPLOYEE where telephone = '" + telephone + "')";