0

私のSQLクエリでは、昇順で名前を取得する必要があります

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

次に、上に示すように、ごちゃ混ぜの順序で自動的に行 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

シーケンスとして別の行が必要です

この一時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

選択が完了した後に正しい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 に答える
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 列を追加し、2 番目に必要なレコードを抽出します。

  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 に答える