子查询列名的问题

现有学生表、班级表,学生表关联到班级表,结构如下图:
  
执行查询:
select * from
(
 select rownum as r,t.* FROM
  (
   SELECT s.id, c.name FROM stuinfo s,classes c WHERE s.classesid=c.id
  )
t where rownum<=6) where r>4;
没问题,得到结果如下:

更改sql语句如下:
select * from
(
 select rownum as r,t.* FROM
  (
   SELECT s.id,s.name ,c.id ,c.name FROM stuinfo s,classes c WHERE s.classesid=c.id
  )
t where rownum<=6) where r>4;
执行结果报错,如下图:


分析结果由于学生表中有id,name,班级表中有id,name,联合查询以后列名都是id,name故外边的查询区分不开两个表的id、name,故各自给id、name取别名代替原有的列名,语句代码如下:
select * from
(
 select rownum as r,t.* FROM
  (
   SELECT s.id AS id1 ,s.name AS name1,c.id AS id2,c.name AS name2 FROM stuinfo s,classes c WHERE s.classesid=c.id
  )
t where rownum<=6) where r>4;
执行后问题解决,效果如下图:

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值