0

在我的 sql 查询中,我需要按 asc 顺序获取名称

SELECT ROWID, NAME FROM CONTACTINFO order by NAME asc

row_id  Name

 5. Arnold,
 2. Ashok
 1. Benz
 3. Cowboy
 6. Danger person
 10. Eleph
 9. Fog
 4. Gun
 8. Hello
 7. Ink

然后自动乱序设置row-id,如上图

但我需要添加另一行,其中包含 ciorect 订单号,如下所示

row_id  Name     Temp_ID            

     5. Arnold,   1
     2. Ashok     2
     1. Benz      3
     3. Cowboy    4
     6. Danger    5
     10. Eleph    6
     9. Fog       7
     4. Gun       8
     8. Hello     9
     7. Ink       10

我需要另一行作为序列

我想使用这个 Temp id 从我的大数据中检索一些有限的数据,比如

SELECT ROWID, NAME FROM CONTACTINFO where Temp_ID >3 && Temp_ID <6 按 NAME asc 排序

4

5 回答 5

2

尝试使用row_number()

select rowId, name, temp_id
from (
   select rowId, name, row_number() over (order by name) temp_id
   from contactinfo 
) A
where temp_id >3 and temp_id <6

--Results 
rowId, name, temp_id
3      Cowboy    4
6      Danger    5
于 2012-12-21T12:24:32.930 回答
0

这可以解决问题::

SELECT rownum,ROWID, NAME FROM CONTACTINFO order by NAME asc
于 2012-12-21T12:06:16.237 回答
0

你可以这样做...

SELECT ROWID ,
      TAB.NAME 
  FROM ( SELECT NAME 
          FROM CONTACTINFO 
       order by NAME asc 
       ) AS TAB 
  WHERE    ROWID>3 
       AND ROWID<6;

或者你也可以使用 ROWNUM..

于 2012-12-21T12:07:37.257 回答
0

你需要做一个嵌套的 SELECT:第一个排序数据并添加一个 ROWNUM 列,第二个提取你想要的记录。

  SELECT ROWID, NAME
    FROM (SELECT ROWID, NAME, ROWNUM rn
            FROM CONTACTINFO
        ORDER BY NAME)
   WHERE rn > 3 AND rn < 6
于 2012-12-21T12:10:55.150 回答
0

选择完成后正确的 rownum 将可用,因此您只能像这样使用它:

select * from (select rownum as temp_id, row_id, name from contactinfo order by name asc) where temp_id >3 && temp_id <6 order by name asc
于 2012-12-21T12:13:44.743 回答