X と Y の 2 つのテーブルがあり、スキーマは同じですが、レコードは異なります。X からのレコードが与えられた場合、一致しない列の NULL 値を含む Y で最も一致するレコードを見つけるためのクエリが必要です。ID 列は比較から除外する必要があります。たとえば、私のレコードが次のようになっているとします。
------------------------
id | col1 | col2 | col3
------------------------
0 |'abc' |'def' | 'ghi'
テーブル Y は次のようになります。
------------------------
id | col1 | col2 | col3
------------------------
6 |'abc' |'def' | 'zzz'
8 | NULL |'def' | NULL
列が一致しない場所には NULL 値があるため、最も近い一致はレコード 8 になります。6 が最も近い試合だったはずですが、「zzz」が失格となりました。
この問題のユニークな点は、id 列とデータ型以外にテーブルのスキーマが不明であることです。4 つの列がある場合もあれば、7 つの列がある場合もあります。わからないだけです-それは動的です。わかっているのは、「id」列があり、その列が varchar または nvarchar のいずれかの文字列になることだけです。
この場合、X からのレコードが与えられた場合に、Y から最も近い一致するレコードを選択するための最適なクエリは何ですか? 私は実際に関数を書いています。入力は整数 (X のレコードの ID) で、出力は整数 (Y のレコードの ID、または NULL) です。私は SQL の初心者なので、ソリューションで何が起こっているかを簡単に説明していただけると非常に助かります。