Oracle 中返回最大值和返回前几个较大值(TOP10)问题一解
2006-07-16 16:30
549 查看
Oracle 中返回最大值和返回前几个较大值(TOP10)问题一解
需返回最大的编号(主键)加1实现自己加操作
1.使用触发器
CREATE SEQUENCE seqmyTableSNO ;
create table myTable
(
cost1number(10,2),
cost2number(10,2),
cost3number(10,2),
snointeger constraint pk_myTable primary key
);
CREATE TRIGGER myTable_b BEFORE INSERT
ON myTable FOR EACH ROW
BEGIN
select seqmyTableSNO.nextval into :new.sno from dual;
END;
这是网上找的其它人的方法,未经测试。
2.而我们用的是在程序中绑定修改,即先调用返回再进行加1插入。现将程序代码写下。
ReturnMaxID()
{
string sqlCommand = "SELECT NVL(MAX(ID),0) " +
"FROM Table1 " ;
DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
}
//说明:
MAX函数:取表中某列中的最大值。
NVL:空值转换,
NVL(VALUE,SUBSTITUTE)即如果VALUE的值为空(NULL),则该语句值为SUBSTITUTE,否则为VALUE
3.被PK掉的方法。
本是用DESC对(ID)列进行排序处理按(DESC),然后返回首行首列。
些方法经使用完全OK,只是代码太长,被老师一看就PK了,我还想了那么久。
关于TOP10的实现方法。
此类方法的主要实现手法是:
按照选定的条件,将选中的列按某一关键列进行排序,选中前十个的值。
public DataSet GetTop10()
{
//DataConnection...
string sqlCommand = "SELECT * FROM" +
"(SELECT ID,Top , ROWNUM NO FROM Table1 " +
"ORDER BY Top DESC)" +
"WHERE NO <= 10 ";
DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
return db.ExecuteDataSet(dbCommand);
}
//语意说明:将ID,Top两列选出,并将按DESC的方式,对Top列进行排序。RowNum取出前十个值。
RowNum:限制输出为几个记录
示例:
select Title from Book_sorted
where Rownum < 10
需返回最大的编号(主键)加1实现自己加操作
1.使用触发器
CREATE SEQUENCE seqmyTableSNO ;
create table myTable
(
cost1number(10,2),
cost2number(10,2),
cost3number(10,2),
snointeger constraint pk_myTable primary key
);
CREATE TRIGGER myTable_b BEFORE INSERT
ON myTable FOR EACH ROW
BEGIN
select seqmyTableSNO.nextval into :new.sno from dual;
END;
这是网上找的其它人的方法,未经测试。
2.而我们用的是在程序中绑定修改,即先调用返回再进行加1插入。现将程序代码写下。
ReturnMaxID()
{
string sqlCommand = "SELECT NVL(MAX(ID),0) " +
"FROM Table1 " ;
DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
}
//说明:
MAX函数:取表中某列中的最大值。
NVL:空值转换,
NVL(VALUE,SUBSTITUTE)即如果VALUE的值为空(NULL),则该语句值为SUBSTITUTE,否则为VALUE
3.被PK掉的方法。
本是用DESC对(ID)列进行排序处理按(DESC),然后返回首行首列。
些方法经使用完全OK,只是代码太长,被老师一看就PK了,我还想了那么久。
关于TOP10的实现方法。
此类方法的主要实现手法是:
按照选定的条件,将选中的列按某一关键列进行排序,选中前十个的值。
public DataSet GetTop10()
{
//DataConnection...
string sqlCommand = "SELECT * FROM" +
"(SELECT ID,Top , ROWNUM NO FROM Table1 " +
"ORDER BY Top DESC)" +
"WHERE NO <= 10 ";
DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
return db.ExecuteDataSet(dbCommand);
}
//语意说明:将ID,Top两列选出,并将按DESC的方式,对Top列进行排序。RowNum取出前十个值。
RowNum:限制输出为几个记录
示例:
select Title from Book_sorted
where Rownum < 10
相关文章推荐
- ORACLE 最大连接数的问题
- 堆的使用:使用小顶堆处理问题----查找几个数组中最大的k个数
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- linux中好几个java及oracle中的java问题
- oracle 11g 查询时数据库有值返回空的bug解决(hibernate架构有这个问题)
- 关于Oracle一个汉字代表几个字节的问题
- Oracle取最大值问题
- Oracle OAF 问题集锦 - 页面‘返回至’/‘Return to’的效果如何实现?
- 最近遇到的几个oracle视图问题
- Enterprise Library - Data Block oracle返回 cursor 问题的解决
- oracle字符集乱码及返回 REF CURSOR 的存储过程执行问题
- Oracle的几个使用问题
- Java+Oracle应用开发的几个经典问题
- 修改Oracle最大连接数后的系统崩溃问题
- oracle中关于varchar2的最大长度问题
- 解决Oracle中wm_concat函数会返回<clob>的问题
- Oracle超出最大连接数问题及解决
- Oracle中Returning语句的几个小问题
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- Oracle系列——开发中奇葩问题你遇到几个(一)