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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐