2017-12-09 4 views
0

SQL Serverデータベースで空きタグ番号を見つけようとしています。 *私は、すべての可能なタグ番号を宣言することでこれを行ってきた、とタグ番号が取られたとき、それはつまり、1に設定されたビット列があり、無料のタグ番号は、BIT = 0SQLで無料のタグ番号を見つける:SQLクエリの行に複数の数字を見つける方法

SELECT TOP(\*NUMBERS*) TAG 
FROM \*DATABASE* 
WHERE BIT = 0 

を持っていますNUMBERS *は必要なタグの数です。問題は、いくつかのタグ番号が削除された後です。 5つのタグ番号(例えば、10,11,12,13,14,15)値の広がり(例えば、5,8,10,11,12)を得ることができる。私は、削除されたタグ番号を再利用できるようにしたいが、すべての数字を一列にしたい。

ベストプラクティス(SQLまたはC#)でこれをどのように解決できますか?

+0

「結果をSQLで並べ替える方法は?」 – john

+1

あなたの質問に_MySql_と_sql-server_という2つのタグを追加しました。このような質問をするときに、より正確に記述できますか? SQLの実装は、地球上のすべてのデータベースで同じではありません。おそらく、さまざまなデータベースに異なる回答があります。 – Steve

+0

john:いいえ、 "by order by ..."と似ていませんが、すべてのタグ番号は前の番号より1つ多いはずです。したがって、元の投稿で説明しようとした例から、10,11,12,13,14,15が私の望むものですが、5,8,10,11,12は8が5 + 3であるために必要なものではありません。 5 + 1ではなく、10は8 + 1ではない。したがって、この場合、5と8はフィルタリングされている必要があります。なぜなら、次の必要な数字は空きではないからです。 スティーブ: 申し訳ありませんが、私はSQLサーバーを意味します。 – Kristin

答えて

0

申し訳ありませんが、このクエリでは、NUMBERS個のフリータグのシーケンスの最初のタグが表示されます。アイデアは明確でなければなりません。

SELECT TOP (1) TAG FROM *DATABASE* D WHERE BIT = 0 AND *NUMBERS* = (SELECT 
COUNT(*) FROM *DATABSE* WHERE BIT = 0 AND TAG >= D.TAG AND TAG < D.TAG + *NUMBERS*) 
+0

ありがとう、それは働いた! – Kristin

関連する問題