回 帖 发 新 帖 刷新版面

主题:关于=all的使用问题

已创建表depositor 和 account2,分别有属性account2_number、customer_name以及account2_name、branch_name、balance。
在oracle中输入以下语句,目的是找出在Brooklyn的所有支行都有帐户的客户

select distinct D.customer_name
from depositor D
where (select branch_name
       from depositor T,account2 R
       where T.account2_number = R.account2_number
       and 
       D.customer_name = T.customer_name)
       =all
       (select branch_name
       from branch
       where branch_city = 'Brooklyn')
返回
Error report:
SQL Error: ORA-01427: 单行子查询返回多个行
01427. 00000 -  "single-row subquery returns more than one row"
请问为什么?
本人是新手,刚学数据库没几天。写这个的另一目的是为了看看=all的用法。因书上只是一笔带过,是否在这里出错了?

回复列表 (共2个回复)

沙发

=all 表示等于子查询中所有的值,这根本是不能成立(永假)的,这样写也是没有实际意义的。

你应该使用 =any ,表示等于查询结果中任何(每一个)值。=any 相当于 in 。

板凳

非常感谢
[em1]

我来回复

您尚未登录,请登录后再回复。点此登录或注册