2009-08-12 6 views
0

テーブルの途中に行を追加する必要があるという要件があります(存在しない場合)。テーブルの途中で行を追加する方法

これで私を助けてもらえますか?

+0

達成しようとしていることを教えてください。あなたのテーブルには何が入っていますか? – Max

答えて

4

任意の位置に行を追加することはできません。テーブル内の行セットは、順序付けされていないので、最初は「位置」がありません。 SELECTクエリにはいくつかの順序ルールを使用して、結果を必要な順序で取り出すことができます。

7

あなたがこの質問をしているという事実は、あなたの現在のコードが偶然にしか働いていないことを心配しています。行が特定の順序で表示されるようにするには、SQLで「ORDER BY」を使用する必要があります。そうでない場合は、未定義の順序で行が取得されます。

これは、挿入された順序などの順序が変わっている可能性があります。挿入された行や削除された行が何らかの理由で変更される可能性があるためです。

ご注文が重要な場合は、で注文を使用する必要があります。そして、それは最も効果的に「うまくいく」でしょう。しかし、とにかくそれを追加する必要があることは私には聞こえます

1

行を任意の位置に挿入することは技術的に不可能ではなく、正規化の「法律」にも違反します。

レコードセット内のデータを注文する必要がある場合は、ORDER BYステートメントでソートする必要があります。これはあなたのテーブルに含まれているデータに対して行われなければなりません。あなたは、例えば

  1. 最初の行、[上へ移動]/[下へ移動]
  2. 2行目、[上へ移動]/[下へ移動]
  3. 第三列、ユーザの入力に応じて行を注文したい場合、[上に移動]/[下に移動]

カラム 'user_sorting'を追加して、user_sortingの値がサブセットに対してユニークであることを確認してください。

+0

テーブルの途中でルールを追加できない場合は、これを達成できる方法はありますか? –

+0

申し訳ありませんが友人、スペルミスがありました。テーブルの真ん中に行を直接追加できない場合は、これを達成できる他の方法はありますか? –

0

前述のように、技術的にはテーブルの途中でものを追加することはできません。ORDER BY句を使用していない場合は、出力でソートされていることがうれしいでしょう。

引数として、テーブルにrow_idがあると仮定し、単純なSELECT文を使用してローがrow_idの昇順で表示されたとします。真ん中に行を追加する場合は、新しい行の「下」にしたいすべての行のrow_idを増やし、そのギャップに収まるrow_idの新しい行を追加する必要があります。次に、これらの行を出力するSELECT文を更新して、その行をソートする必要があります。row_idORDER BY row_id

関連する問題