求数据库科普。。。

digu 2010-12-02 09:18:19
single-row subquery returns more than one row
SELECT (select e.orgname AS subwayname from organization_child c left outer join organization e on c.subwayid=e.orgid where e.region = b.region and b.adddata1 = c.subwayid and c.subwayid = parwayid ) ADDDATA1, (select e.orgname AS subwayname from organization_child c left outer join organization e on c.subwayid=e.orgid where e.region = b.region and b.ADDDATA2 = c.subwayid and c.subwayid = parwayid ) ADDDATA2, (select PARAMname from im_v_param v where v.region = b.region and v.paramtypeid='BUSI_TYPE' and v.PARAMID=b.ADDDATA3)ADDDATA3, ADDDATA4, ADDDATA5 FROM IM_BUSI_EXTEND b,IM_BUSI_OPERA O WHERE B.REGION = O.REGION AND B.REGION AND B.REGION AND

single-row subquery,这里的单行子查询是什么意思?
后面的sql语句中那些 on ADDDATA1 ADDDATA2 ……之类的是什么意思?

要是谁能给告诉我这些sql中那个是单行子查询,那就更加感激不尽了。

大家不要直接给外部链接啊,可以帮我转过来。我除了csdn哪里都去不了。。。
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-12-03
  • 打赏
  • 举报
回复
(select e.orgname AS subwayname from organization_child c left outer join organization e on c.subwayid=e.orgid where e.region = b.region and b.adddata1 = c.subwayid and c.subwayid = parwayid )

同一个c.subwayid = parwayid 有多条记录就是子查询返回多条记录 否则 相反
digu 2010-12-03
  • 打赏
  • 举报
回复
谁能解释下“子查询出现在select list中作为一个字段值来返回”这句话么?如果出现在select list中的子查询返回多条记录那该如何理解,和返回单行记录有何区别?

注:这里的出现在select list中的意思是select AAA from table where...,子查询出现在AAA的位置。
minitoy 2010-12-03
  • 打赏
  • 举报
回复
这样做类似把一个数组塞到一个整型变量,装不下.
jimmylin040 2010-12-03
  • 打赏
  • 举报
回复
也就是说,你用"="不可以接多个值。
你用"in"就可以了
digu 2010-12-03
  • 打赏
  • 举报
回复
子查询出现在select list中作为一个字段值来返回。

不是很明白这句话。

譬如select (select ename, num from emp) ADD from table where...

这里的子查询(select ename, num from emp)如果返回多条记录,那如何理解其作为一个字段值来返回。

是否就是select (a.ename, a.num) AS ADD from emp a, table b where...
feixianxxx 2010-12-02
  • 打赏
  • 举报
回复
单行子查询 就是这个子查询出来的结果集只有一行记录...
yuhongpingimu 2010-12-02
  • 打赏
  • 举报
回复
ADDDATA1 ADDDATA2是别名
digu 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java3344520 的回复:]

说你的查询返回了多个值,但是实际你需要的只是一个值

例如 select * from tab
where name=(select name from tab)
按道理你的NAME=这里只能是一个值,而你的子查询返回了好几个名字。。。
[/Quote]

也就是这里的加色部分 =(select name from tab) 是一个单行子查询?
有点明白了。
iqlife 2010-12-02
  • 打赏
  • 举报
回复
说你的查询返回了多个值,但是实际你需要的只是一个值

例如 select * from tab
where name=(select name from tab)
按道理你的NAME=这里只能是一个值,而你的子查询返回了好几个名字。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧