int
データベースのテーブルに列がありますSQL
。私はこのテーブルにいくつかのコードを保持しています。私のコードのサンプル範囲は:(1、9)です。
この範囲のコードを使用する必要はありません。
例:
使用されるコードは次のとおりです。
Select code from MyTable -- result is 2,6,7,8,9
使用されていないコードは:1,3,4,5
では、どうすればこのコードを選択できますか?期待される結果は次のとおりです。1,3,4,5
int
データベースのテーブルに列がありますSQL
。私はこのテーブルにいくつかのコードを保持しています。私のコードのサンプル範囲は:(1、9)です。
この範囲のコードを使用する必要はありません。
例:
使用されるコードは次のとおりです。
Select code from MyTable -- result is 2,6,7,8,9
使用されていないコードは:1,3,4,5
では、どうすればこのコードを選択できますか?期待される結果は次のとおりです。1,3,4,5
範囲の数値のリストを生成し(ここでは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句は、任意の数値テーブル生成コードに置き換えることができます。例:
私見では、有効なコードのリストをデータベースのルックアップ テーブルに保持し、使用されたコードを他のテーブル (投稿の MyTable ) の外部キー フィールドとして保持する必要があります。
コード ID とコードを持つ LookUpTable という名前のコードを保存するテーブルを作成したと仮定します。他のテーブルには、外部キーとしてコード ID があります。次に、次のクエリを使用できます。
SELECT LOOKUPTABLE.Code
FROM LOOKUPTABLE LEFT JOIN FOREIGNKEYTABLE ON LOOKUPTABLE.ID = FOREIGNKEYTABLE.CodeID
WHERE FOREIGNKEYTABLE.USERID IS NULL