sql >> データベース >  >> RDS >> Sqlserver

クエリ:値のリストに属さない行を検索します

    私が信じている問題は、あなたがステートメントであなたから価値を見つけようとしているということです.必要なことは、in ステートメントをテーブルに変換することです。そうすれば、どの値が異なるかを判断できます。

    create table #temp
    (
    value int
    )
    
    insert into #temp values 1
    insert into #temp values 2
    insert into #temp values 3
    insert into #temp values 4
    
    select
     id
    from
     #temp
    where
     not exists (select 1 from Tab where Col = id)
    

    より良い代替手段は、コンマ区切りの文字列をテーブルに変換するテーブル値関数を作成することです。便利なコードはありませんが、Google で簡単に見つけられるはずです。その場合、以下の構文を使用するだけで済みます。

    select
     id
    from
     dbo.SplitStringToTable('2,3,6,7')
    where
     not exists (select 1 from Tab where Col = id)
    

    これが役立つことを願っています



    1. PostgreSQL:パフォーマンスの違いを除いてNOT IN対(編集#2)

    2. ローリング日付範囲内の個別の値の数を照会します

    3. SSIS - 複数の列の値を Null に変換する

    4. zenddbでネストされたselectを構築する方法