帮忙看一下我的sql语句错在哪了。

tuto22 2009-11-19 05:52:02
select id,uname from sysusers where id in
(select sysuser_id from
(select distinct sysuser_id from docomman where docomexam_id in(select id from docomexam where sysuserid = 4 order by id desc ))
where rownum <=10 );

提示是第三行order by前面缺失右括号
...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2009-11-19
  • 打赏
  • 举报
回复
select id,uname from(
select c.id,c.uname,
count(distinct b.sysuser_id)over(order by a.id desc)c
from docomexam a,docomman b,sysusers c
where a.id=b.docomexam_id
and b.sysuser_id=c.id
and a.sysuserid=4
)
where c<=10

这样试试
小灰狼W 2009-11-19
  • 打赏
  • 举报
回复
select id,uname from(
select c.id,c.uname,
row_number()over(order by a.id desc)rn
from docomexam a,docomman b,sysusers c
where a.id=b.docomexam_id
and b.sysuser_id=c.id
and a.sysuserid=4)
where rn<=10
tuto22 2009-11-19
  • 打赏
  • 举报
回复
看的出来我这不仅仅是order by 错了,语句都有点乱,可能查询起来会很慢,那么哪位能帮我修改一下呢。
表是这样的:
文件表: 文件与审核人对应表: 审核人表:
文件id 用户id 文件id 审核人id 审核人id 审核人名
id sysuserid id docomexam_id sysuser_id id uname
1 2 1 2 123 123 晨晨
2 3 2 3 123 124 兰兰
3 4 3 2 124 125 咪咪
4 3 4 5 123 126 嘟嘟
5 3 5 3 124
6 4 6 2 125
7 2 7 2 126
8 3 8 3 125
9 4 9 1 124
10 4 10 3 126

要求就是通过用户id查询出最近用过的10为审核人的id和姓名,因为每份文件可能用到很多个审核人,每两份文件用到是审核人可能有相同的,我想就是先把用户id对应的所有文件排序列出来,再查对应的前10为审核人。
wh62592855 2009-11-19
  • 打赏
  • 举报
回复
IN里面不让用ORDER BY的
SQL> select name
2 from a
3 where id in (select id from b order by id);
where id in (select id from b order by id)
*
第 3 行出现错误:
ORA-00907: 缺失右括号
SQL> select name
2 from a
3 where id in (select id from b);

NAME
----------------------------------------
wp
wh
huangyunzeng2008 2009-11-19
  • 打赏
  • 举报
回复
真的,你的这个order by 根本用不着的。
duqiangcise 2009-11-19
  • 打赏
  • 举报
回复
2楼回答正确,应该是in子句中不让用order by子句。
你把
select id from docomexam where sysuserid = 4 order by id desc

中的order by id desc去掉后,在执行一下该语句试试。
iqlife 2009-11-19
  • 打赏
  • 举报
回复
你这个语句乱,你要表达什么样子的查询,说说看
列点数据好了
嘟嘟xo 2009-11-19
  • 打赏
  • 举报
回复
应该是in的子句中不让用order关键字吧~
hebo2005 2009-11-19
  • 打赏
  • 举报
回复

SELECT ID, uname
FROM sysusers
WHERE ID IN (SELECT sysuser_id
FROM (SELECT DISTINCT sysuser_id
FROM docomman
WHERE docomexam_id IN (SELECT ID
FROM docomexam
WHERE sysuserid = 4))
WHERE ROWNUM <= 10);

你那里面ORDER BY根本没意义

17,377

社区成员

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

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