電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

No.1です。



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

というわけで、質問者さんには、Accessでない場合は私の回答は無視して下さいね。
    • good
    • 0

お使いのDBは何ですか?やはり、それくらいはきちんと書きましょう。

Oracle だとは思うのですが。
( Oracle でないのなら、以下の内容は当てはまらないと思うので、無視してください。)
それと、ROW NUMBER と言われているのは、ROWNUM のことですよね?( ROW_NUMBER() はまた少し違うもののようです。)
実際、削除前と削除後で ROWNUM を比較してみるとわかると思うのですが、変わりますよね。
削除しても変わらないモノでアクセスしたいのなら、ROWID を使用しましょう。

#1 さんへ
Oracle には ROWNUM というものがあります。
これを使用すると、金額の多い方から 10 件だけを抽出する、といったことができます。
↓を参考にしてください。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
    • good
    • 0

こんにちは。

maruru01です。

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

並び順を意識したデータにするなら、「ID」とか「並び順」などのフィールドを用意しましょう。
そのフィールドに「1、2、3・・・」と入っていれば、そのフィールドを条件にして抽出出来ます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す