INFORMATIONIX中查询的行号
时间:2020-03-06 14:34:53 来源:igfitidea点击:
我正在使用informix数据库,我想要一个查询,我们也可以在查询中生成一个行号
喜欢
select row_number(),firstName,lastName from students; row_number() firstName lastName 1 john mathew 2 ricky pointing 3 sachin tendulkar
这里的firstName,lastName来自数据库,其中行号是在查询中生成的。
解决方案
我认为最简单的方法是使用以下代码并相应地调整其返回值。
SELECT rowid,* FROM表
它对我有用,但是请注意它将返回数据库中的行号,而不是查询中的行号。
P.S.这是来自Experts Exchange的公认答案。
我们可能无法在分散在多个DBSpaces中的表中使用ROWID,因此任何使用ROWID的解决方案都不是特别可移植的。强烈建议不要这样做。
如果源表中没有SERIAL列(这是将其作为一般概念实现的更好方法),请查看
CREATE SEQUENCE(创建序列),它或者多或者少与Orrible函数等效,该函数在从中进行选择时生成唯一的数字(与SERIAL相反,当行插入时生成唯一的数字)。
最好的方法是使用(新初始化的)序列。
begin work; create sequence myseq; select myseq.nextval,s.firstName,s.lastName from students s; drop sequence myseq; commit work;
给定一个名为Table3的表,该表具有3列:
colnum name datatype ======= ===== === 1 no text; 2 seq number; 3 nm text;
笔记:
seq是表中的字段,具有按升序排列的唯一值。这些数字不必是连续的。
这是返回行号(RowNum)以及查询结果的查询
SELECT table3.no, table3.seq, Table3.nm, (SELECT COUNT(*) FROM Table3 AS Temp WHERE Temp.seq < Table3.seq) + 1 AS RowNum FROM Table3;