关于rownum的一个问题,请大家帮忙

tenghongc 2005-01-27 10:01:03
SQL> select * from (select A.*,B.* from person A,drivinglicense B where A.sfzmhm=B.sfzmhm and A.xm like '%王伟%') where rownum<=100;

select * from (select A.*,B.* from person A,drivinglicense B where A.sfzmhm=B.sfzmhm
*

ERROR 位于第 1 行:
ORA-00918: column ambiguously defined

当然select * from (select A.sfzmhm,B.dabh from person A,drivinglicense B where A.sfzmhm=B.sfzmhm and A.xm like '%王伟%') where rownum<=100这样是正确的,但是字段太多,我不想把都列出来,不然语句太长!
请问怎么办?
...全文
163 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
slyfox123456 2005-01-28
  • 打赏
  • 举报
回复
只要你把相同的字段列去了就可以了
yxxx 2005-01-28
  • 打赏
  • 举报
回复
问题好像与标题不符吧-_-!!
bati_mfl 2005-01-28
  • 打赏
  • 举报
回复
名字相同的要用别名
yxxx 2005-01-28
  • 打赏
  • 举报
回复
嗯,正如没钱兄所说
daydayupliq 2005-01-28
  • 打赏
  • 举报
回复
ambiguously
adv.
含糊不清地,引起歧异地

报的就是列名含糊不清的错误,而且用*似乎不是好习惯吧~
GerryYang 2005-01-28
  • 打赏
  • 举报
回复
我觉得还是全部列出来,去掉名字相同的字段.
这是一个好习惯.
1.可以节约资源,加快查询速度
2.如果表扩充,增加字段不会对原来的程序有影响.
kavoe 2005-01-28
  • 打赏
  • 举报
回复
辛苦些,用字段替换*吧,不然是不行地
ORARichard 2005-01-28
  • 打赏
  • 举报
回复
不一样,结果集中出现重复的字段没关系,但你要从结果集中取字段,则结果集中必须不能出现重名
就象在视图中不能出现重名字段一样。
tenghongc 2005-01-28
  • 打赏
  • 举报
回复
我一个表就有90多个字段啊!列出来会死人的,尽管列出来不麻烦,但是很不美观不爽啊!郁闷!
tenghongc 2005-01-28
  • 打赏
  • 举报
回复
有关系啊!如果不是rownum<=100,我就不用这么麻烦了!
直接
select A.*,B.* from person A,drivinglicense B where A.sfzmhm=B.sfzmhm and A.xm like '%王伟%'
就可以了,
那再请问为什么上面这句话能执行?不一样有两个sfzmhm么?尽管他们的值是相同的!
jiangchuanli 2005-01-28
  • 打赏
  • 举报
回复
参考:
select * from
(
select rownum rm,a.* from
(select * from tablename) a
where rownum<=&maxv
)
where rm>=&minv
/
ORARichard 2005-01-27
  • 打赏
  • 举报
回复
这是没办法的。
A.sfzmhm=B.sfzmhm 这说明两个表中都含有sfzmhm这个字段。
A.*,B.* 必然在一个结果集中出现两个同名的字段,这是不允许的。

17,377

社区成员

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

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