oracle中奇遇distinct问题

chenyu112 2008-05-08 04:57:16
orcle9i数据库

1. 数据库重装以后出现了一个奇怪的问题,所有涉及distinct的SQL语句第一个字段都取不到
如sql = "select distinct(a),b,c,d from table"
取到的列是b,c,d,而a无法取到

不知道各位有没有遇到过,该如何解决

2.而且ASP在连接数据库时必须得刷新两下才可以连接上,否则提示
ADODB.Connection 错误 '800a0bb9'
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

重装数据库前可以运行
...全文
743 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxmsammi 2008-05-13
  • 打赏
  • 举报
回复
distinct这样用对么?distinct这样用跟没用没什么区别吧!!!
chenyu112 2008-05-12
  • 打赏
  • 举报
回复
可能会是哪的问题?
望各位大虾帮帮我吧,都快愁死了
chenyu112 2008-05-12
  • 打赏
  • 举报
回复
期待高手给解决
genispan 2008-05-10
  • 打赏
  • 举报
回复
sql语句没什么问题 你肯定哪没设置好
ruihuahan 2008-05-09
  • 打赏
  • 举报
回复
distinct 不是这种用法吧。
chenyu112 2008-05-09
  • 打赏
  • 举报
回复
不是取到的空,就是没有
rs1.fields(0).name 是caption,而不是name
chenyu112 2008-05-09
  • 打赏
  • 举报
回复
fields(i).name取得是字段的名称

如果将sql中的distinct去掉的话,取出的数据是正确的,而且也能显示出来
加上后在sql plus中以出的是四列,可是使用asp读的时候成了后面的三列了
lifanfly 2008-05-09
  • 打赏
  • 举报
回复
没有遇到过,在sqlplus里面执行可以证明sql没问题,还是在你的程序里面查错吧,不懂asp
sealand1980 2008-05-09
  • 打赏
  • 举报
回复
有点怪
alarmiss 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chenyu112 的回复:]
......
for i = 0 to rs1.fields.count-1
response.write(rs1.fields(i).name&",")'此处只取出了后三列
next
%>
[/Quote]
没有用过asp,不过从这里可以看出来,如果fields(1)是null的话,null.name肯定就空指针出错了,
没有空指针错,那么fields(i)就引用了什么,只是fields(i).name中没有值.
没用过asp的,不知道fields(i)name是什么,字段名还是字段值啊

在oracle中,这个肯定可以取出来,估计问题是在程序里面;去asp的区问问吧
ehuman 2008-05-08
  • 打赏
  • 举报
回复
在前面补个空列试验一下,
Oracle不可能出现你说的问题。
应该多考虑程序疑点。

SQL1 = "SELECT null as null_column, distinct(substr(name,1,8)) as name,caption,type,INPUTORDER from table11 where Name like 'A122%' and type
robin_ares 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenyu112 的回复:]
不行,还是第一列取不到,只取到了后面的三列
[/Quote]
取不到是什么意思,取到是空?
chenyu112 2008-05-08
  • 打赏
  • 举报
回复
原程序
DIM SQL1
SQL1 = "SELECT distinct(substr(name,1,8)) as name,caption,type,INPUTORDER from table11 where Name like 'A122%' and type <> 1 ORDER BY INPUTORDER"
'RESPONSE.Write(SQL1)
SET RS1 = SERVER.CreateObject("ADODB.RECORDSET")
RS1.OPEN SQL1,CONN,1,1
for i = 0 to rs1.fields.count-1
response.write(rs1.fields(i).name&",")'此处只取出了后三列
next
%>
robin_ares 2008-05-08
  • 打赏
  • 举报
回复
就是,字段distinct(a)你用a取,不行的
第二个 是不是你刚进页面就有db连接,而且一直占用,或者干脆就异常了。
如果没有,把连接数改大点看看
chenyu112 2008-05-08
  • 打赏
  • 举报
回复
不行,还是第一列取不到,只取到了后面的三列
ehuman 2008-05-08
  • 打赏
  • 举报
回复
你在程序里试验一下,看看可以否。
select distinct(substr(name,1,8)) as name,caption,type,inputorder from table1

你的distinct用的比较怪。
chenyu112 2008-05-08
  • 打赏
  • 举报
回复
select distinct(substr(name,1,8)),caption,type,inputorder from table1
原SQL
chenyu112 2008-05-08
  • 打赏
  • 举报
回复

我装的是企业版
ehuman 2008-05-08
  • 打赏
  • 举报
回复
select distinct(a) as a,b,c,d from table;
字段名问题。
chenyu112 2008-05-08
  • 打赏
  • 举报
回复
注:
1 在sqlplus中执行的SQL是显示正确的列数,可是一到WEB(ASP写的)里犯是涉及distinct都少一列.

17,377

社区成员

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

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