考虑如下表(名称 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,并且有多个术语属于 category1 或 category2。我试图在这两个类别中或在这两个类别中的一个类别中找到具有相同 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
这工作正常,但每行返回两次......例如,
TermId1、TermId2 TermId2、TermId1
如果 termId1 与 termId2 不同,则不需要逆序结果。那么,我应该如何获得一次结果呢?
感谢您的帮助,