• 締切済み

レコードの削除とrow number

例えばレコードが5つあるテーブルの真ん中のレコードを削除したとします。 元のrow numberでいうと、0,1,3,4のレコードが残るわけですが、元のrow numberでいう3にアクセスするには、row numberは3のままでいいのですか? レコードの削除によって、その直後にrow numberは変わったりするのでしょうか?

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.1です。 No.2さんへ。 >Oracle には ROWNUM というものがあります。 私は、ついAccessだと勝手に判断して回答してしまいました。 「データベース」カテゴリなのだから、当然Access以外も考えられるのに、うっかりしていました。 だから、DBやアプリケーションはちゃんと明記して欲しいですよね。 (と言い訳してますが。) というわけで、質問者さんには、Accessでない場合は私の回答は無視して下さいね。

回答No.2

お使いのDBは何ですか?やはり、それくらいはきちんと書きましょう。Oracle だとは思うのですが。 ( Oracle でないのなら、以下の内容は当てはまらないと思うので、無視してください。) それと、ROW NUMBER と言われているのは、ROWNUM のことですよね?( ROW_NUMBER() はまた少し違うもののようです。) 実際、削除前と削除後で ROWNUM を比較してみるとわかると思うのですが、変わりますよね。 削除しても変わらないモノでアクセスしたいのなら、ROWID を使用しましょう。 #1 さんへ Oracle には ROWNUM というものがあります。 これを使用すると、金額の多い方から 10 件だけを抽出する、といったことができます。 ↓を参考にしてください。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04_2.htm

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 まず、誤解されているようですが、テーブルにはrow number(行番号)というものは存在しません。 そもそも、テーブルには並び順という概念はありません。 そのテーブルのデータを、フォームに表示したり、クエリで取り出したりする場合に、並び順の設定をすることで順番が決まります。 もちろん、テーブルを表示している時に並び順を変えることも出来ます。 したがって、並び順はその都度設定されるもので、テーブルのデータ自体に「3番目」などという表現は出来ません。 並び順を意識したデータにするなら、「ID」とか「並び順」などのフィールドを用意しましょう。 そのフィールドに「1、2、3・・・」と入っていれば、そのフィールドを条件にして抽出出来ます。

関連するQ&A