select * from tablename where rowno<=10 order by fdname是不是? 呵呵
解决方案 »
- 看看这个,能不能用一条SQl语句实现
- Select * from EduManager where EMName='110110' And Password='110110' 为什么这句会错呢??
- 怎样从一存储过程或者自定义函数中跳出?
- 百度搜索提示,数据库问题
- 怎么写触发器和存储过程/函数??????
- SQL SERVER连接方式的疑惑
- 存储过程问题
- DTS时发生数据丢失的现象
- java application调用数据库问题
- 如何用GetFieldValue读取sql server中的ntext字段
- ORACLE都有那些版本可以安装在WINNT/WIN2000/W98上,几张盘?
- 老大,在oracle 如何实现中文按拼音排序?
我没用过 Oracle, 就这 rownum 还是在这里看来的。请教:rownum 是指记录的物理顺序号还是指记录在数据集中的顺序号,或者是其它? 我写的对吗?为什么?讲解一下如何?
你这样只是把前十个选出来再排序。
帮我看看我的问题。分给你留着呢!
select top 10 * from userinfo order by user_id desc请问,在oracle中如何实现呢???????
表名: t_Salary
字段: Emp_no 人员编号,
Amount 收入
数据库 Oracle8 or laterSelect * from t_Salary aa,
(Select a.Emp_no
From t_Salary a,t_Salary b
Where a.Amount<=b.Amount
Group by a.Emp_no
Having Count(b.Emp_no)<=10) bb
where aa.Emp_no = bb.Emp_no
order by aa.Amount desc
我的用法就是oracle的呀。我正在用oracle,试过,没错的。
我用你的语句试了几次,每一次都已死机告终,不知您是过没有???
我用你的语句试了一下:
select F from (select F from Table order by F) where rownum<=10 它报语法错误!!! 我用的是oracle 8 ,不是8i的, 难道不支持???还有别的办法吗?
Create table t_S_Salary(
Emp_no varchar(10),
Amount number(8)
)
/
Insert into t_S_Salary
Values('00001',1)
/
Insert into t_S_Salary
Values('00002',2)
/
Insert into t_S_Salary
Values('00003',3)
/
Insert into t_S_Salary
Values('00004',4)
/
Insert into t_S_Salary
Values('00005',5)
/
Insert into t_S_Salary
Values('00006',6)
/
Insert into t_S_Salary
Values('00007',7)
/
Insert into t_S_Salary
Values('00008',8)
/
Insert into t_S_Salary
Values('00009',9)
/
Insert into t_S_Salary
Values('00010',10)
/
Insert into t_S_Salary
Values('00011',11)
/
Insert into t_S_Salary
Values('00012',12)
/
Insert into t_S_Salary
Values('00013',13)
/
Insert into t_S_Salary
Values('00014',14)
/
Insert into t_S_Salary
Values('00015',15)
/Select aa.Emp_no,aa.Amount
from t_S_Salary aa,
(Select a.Emp_no
From t_S_Salary a,t_S_Salary b
Where a.Amount<=b.Amount
Group by a.Emp_no
Having Count(b.Emp_no)<=10) bb
where aa.Emp_no = bb.Emp_no
order by aa.Amount desc
/
Drop table t_S_Salary
/
赚点分太辛苦了,你赶紧给点分吧。
select column from
(select * from table_name order by column desc)
where rownum <= 10;
---------- ----------
00001 1
00002 2
00003 3
00004 4
00005 5
00006 6
00007 7
00008 8
00009 9
00010 10
00014 225
00018 22
00019 22
00020 6
00021 6
00022 60
00023 60
00013 5
00024 60
00025 60
00026 225
00027 2
00028 2
00029 200
00030 10
00031 10
00033 10
00032 11
00035 11你的语句返回的结果如下:
EMP_NO AMOUNT
---------- ----------
00014 225
00026 225
00029 200
00022 60
00023 60
00024 60
00025 60
00018 22
00019 22
已选择9行。该如何解决????
请指教!!!to:zheng
你的语句在oracle 8中报错如下:
select * from (select * from t_s_salary order by amount) asd where rownum<=10
*
ORA-00907: ?????
好像是不支持order by amount这句话to wwsccd:
您的我试了,也不行,同样报错: ORA-00907
我使用的为Oracle 8i。
用Richter的方法改进如下即可:
Select aa.Emp_no,aa.Amount
from t_S_Salary aa,
(Select a.Emp_no
From t_S_Salary a,t_S_Salary b
Where a.Amount<=b.Amount
Group by a.Emp_no
Having Count(b.Emp_no)<= 11 ) bb
where aa.Emp_no = bb.Emp_no
and rownum <= 10
order by aa.Amount desc
但在amount为22的员工有3位时,你只能将11继续加大。
当然还要考虑amount大于22员工数!
最简省的方法,将11改为1000或更大。
此种方法效率...我推荐一种方法。
1、创建视图
create view v_s_salary as
select emp_no,sum(amount) total
from t_s_salary
group by emp_no
order by sum(amount) desc;
2、
select * from v_s_salary
where rownum <= 10;
Select 字段 From (Select 字段 From 表 Where Nvl(字段,0)<>0 Order by 字段 Desc) Where Rownum<=10
在8.0.5及以下版本中不能这伴写(子查询中的Order by)。
不过只用Select应该有办法,我想想先。
select ColName from (select * from table_name order by ColNamedesc)
where rownum <= 10;