0

intデータベースのテーブルに列がありますSQL。私はこのテーブルにいくつかのコードを保持しています。私のコードのサンプル範囲は:(1、9)です。
この範囲のコードを使用する必要はありません。

例:
使用されるコードは次のとおりです。

Select code from MyTable  -- result is 2,6,7,8,9

使用されていないコードは:1,3,4,5

では、どうすればこのコードを選択できますか?期待される結果は次のとおりです。1,3,4,5

4

2 に答える 2

4

範囲の数値のリストを生成し(ここではVALUES句を使用します)、「使用済み」リストに半結合します

SELECT
    *
FROM
   (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9)) X (Num)
WHERE
   NOT EXISTS (SELECT * FROM MyTable M WHERE M.Code = X.Num)

編集:

VALUES句は、任意の数値テーブル生成コードに置き換えることができます。例:

于 2012-08-14T08:33:45.310 に答える
1

私見では、有効なコードのリストをデータベースのルックアップ テーブルに保持し、使用されたコードを他のテーブル (投稿の MyTable ) の外部キー フィールドとして保持する必要があります。

コード ID とコードを持つ LookUpTable という名前のコードを保存するテーブルを作成したと仮定します。他のテーブルには、外部キーとしてコード ID があります。次に、次のクエリを使用できます。

SELECT  LOOKUPTABLE.Code 
FROM    LOOKUPTABLE LEFT JOIN FOREIGNKEYTABLE ON LOOKUPTABLE.ID = FOREIGNKEYTABLE.CodeID 
WHERE FOREIGNKEYTABLE.USERID IS NULL
于 2012-08-14T09:04:42.120 に答える