テーブルAとテーブルBの2つのテーブルがあります。これらは同じ列を持ち、データは実質的に同じです。どちらも自動インクリメントされたIDを持っていますが、2つの違いは、同じレコードに対して異なるIDを持っていることだけです。
列の中には、一意ではないIDENTIFIER列があります。つまり、両方のテーブルに同じIDENTIFIERを持つレコードが(非常に少数)あります。
ここで、テーブルAのIDとテーブルBのIDの間の対応を見つけるために、次のようにIDENTIFIER列でこれら2つのテーブルを結合する必要があります(すべての目的で自己結合です)。
SELECT A.ID, B.ID
FROM A INNER JOIN B ON A.IDENTIFIER = B.IDENTIFIER
しかし、IDENTIFIERは一意ではないため、IDENTIFIERの繰り返し値の可能なすべての組み合わせが生成されるため、これは望ましくありません。
理想的には、IDENTIFIER値が繰り返されるID間で、その順序に基づいて1対1の関連付けを生成したいと思います。たとえば、テーブルA(したがってテーブルB)に異なるIDと同じIDENTIFIER値を持つ6つのレコードがあるとします。
A B
IDENTIFIER:'ident105', ID:10 -> IDENTIFIER:'ident105', ID:3
IDENTIFIER:'ident105', ID:20 -> IDENTIFIER:'ident105', ID:400
IDENTIFIER:'ident105', ID:23 -> IDENTIFIER:'ident105', ID:420
IDENTIFIER:'ident105', ID:100 -> IDENTIFIER:'ident105', ID:512
IDENTIFIER:'ident105', ID:120 -> IDENTIFIER:'ident105', ID:513
IDENTIFIER:'ident105', ID:300 -> IDENTIFIER:'ident105', ID:798
それが理想的です。とにかく、IDの順序に関係なく、1対1の関連付けを生成する方法は、引き続き問題ありません(ただし、推奨されません)。
御時間ありがとうございます、
シルヴィオ