Oracle 中返回最大值和返回前几个较大值(TOP10)问题一解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值