2012-01-13 7 views
0

私の質問に対する回答を探してみましたが、データベースの知識が不足しているため、ここの天才が私を助けてくれると思いました。範囲内の最後の行の後にSQL Serverデータベースの行を増やす

私は、データベーステーブルに番号800から順番に順番に行を追加しようとしています。データベースには現在、1から300までのレコードがあります。

このレコードは自動的にインクリメントされませんが、手動で割り当てられます。

は、私は基本的に数字の別のバッチを開始したいのではなく、私は800

からそれらを開始したいと思います(300からIE)プログラムが中断した場所からそれらをインクリメントするよりも、私は別のSQLステートメントを試みたが、得ました一緒に行こうとするものは何もない。私はこれらの行を入力するためにPHPを使用しています。

私はこれほど難しくはないはずですが、私は初心者であり、それは殺します!

私は多分800から始まる一つのレコードを追加し、進むべき道だろう

SELECT LAST FROM A RANGE BETWEEN 800 AND 899 

のような文を実行すると思いました。

ヘルプ、アドバイスはありますか?

+0

具体的にどのデータベースを使用していますか? – Dan

+0

max関数とwhere節を組み合わせると、必要なものが得られます。レコード番号=> 800、レコード番号<= 899のテーブルからmax(recordnumber)を選択してください。 – RThomas

+1

Jack Edmondの答えに対するmarc_sのコメントに注意してください。受け取った回答のいずれかを使用すると、ソリューションの並行性の問題を考慮する必要があります。これを「正しく」行うには、見た目よりもはるかに難しい問題になります。 – Scen

答えて

0

MAX集合関数を使用して、最も高い番号のレコードを取得できます。次の数字は800と899の間で次に高い数値です。

SELECT MAX(my_assigned_number) + 1 as next_number 
FROM my_table 
WHERE my_assigned_number > 800 AND my_assigned_number < 899; 
+1

これは忙しいシステムでは恐ろしいことになるだろうか?複数の同時ユーザが 'MAX(ID)+ 1'アプローチを使用して新しいIDを要求している場合、あなたは**重複を取得することが保証されています..... –

関連する問題