次のようなテーブル (Term という名前) を考えてみましょう。
[Id] [int] IDENTITY(1,1) NOT NULL,
[CategoryId] [int] NOT NULL,
[Label] [nvarchar](256) NOT NULL,
[Uri] [nvarchar](1024) NOT NULL
ここで、CategoryId 1 と CategoryId 2 という 2 つのカテゴリが定義されており、category1 または category2 のいずれかに属する用語が複数あるとします。これら 2 つのカテゴリ、またはこれら 2 つのカテゴリの 1 つのカテゴリ内で、同じ URI を持つが異なるラベルを持つ用語を見つけようとしています。そのために、自己結合 SQL を作成しようとしました。
SELECT
t1.Id AS TermId1,
t2.Id AS TermId2
FROM
Term t1 INNER JOIN Term t2 ON t1.Uri = t2.Uri
WHERE
t1.CategoryId IN (@CategoryId1, @CategoryId2) AND
t2.CategoryId IN (@CategoryId1, @CategoryId2) AND
t1.Label <> t2.Label
これは正常に動作しますが、各行が 2 回返されます...たとえば、
TermId1、TermId2 TermId2、TermId1
termId1 が termId2 と異なる場合、逆順の結果を得る必要はありません。では、一度結果を得るにはどうすればよいでしょうか。
ご協力ありがとうございました、