informix怎么实现排列序号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了informix怎么实现排列序号相关的知识,希望对你有一定的参考价值。

例如一组数据,按升序排列好以后,如何在表中增加一列,改列为排序后的序号,类似下面这样
数 序号
10 1
20 2
30 3
40 4

行号,是指在一定顺序的记录中排列的名次数。

在SQL中,如果没有排序,记录顺序是不一定的,

所以,也就不能确定行号(这叫已知条件不足吧)。

但是您如果告诉了要按什么顺序排列,就可以很简单地求出行号。
方法1:
比如按您给出的两列COL1,COL2排序,就可以这样求行号:
SELECT 行号=(select count(1) from tablename a where a.col1*10000+a.col2<=tablename.col1*10000+tablename.col2),* from tablename order by col1,col2
方法2:
select rowid,* from tablename ;
参考技术A select时加上order by 序号 asc;不就行了

排列序号

代码;

 

class Solution {
public:
/**
* @param A an integer array
* @return a long integer
*/
long long permutationIndex(vector<int>& A) {
// Write your code here
// 找出A中每一个位置其后有多少个数比它小
// 然后再相加这些数与位对应的权
int len = A.size();
int c[len];
c[len - 1] = 0;// 最后一个数之后就没有比它小的数了
vector<int> a;
a.push_back(A[len - 1]);
for(int i = len - 2;i >= 0; --i){
auto iter = lower_bound(a.begin(), a.end(), A[i]);
c[i] = iter - a.begin();
a.insert(iter, A[i]);
}
long long ans = 1, fac = 1, cc = 1;
for(int i = len - 2;i >= 0; --i)
ans += (fac*=cc++) * c[i];
return ans;
}
};

截图:

技术分享

 


























以上是关于informix怎么实现排列序号的主要内容,如果未能解决你的问题,请参考以下文章

怎么向informix数据库表中一次插入多条记录

informix中怎么插入大量数据,再提交

informix数据库死锁问题怎么解决。

informix 锁表问题

Informix 中插入触发器的自引用更新

informix行锁会锁表吗