我有一张这样的表:
Id Name
1 x
2 y
3 z
我想要一个像:
这样的组合Name Name
x y
x z
y z
这种组合应该在同一张桌子上。 我尝试过这样的查询:
SELECT a.Name, b.Name
FROM table1 a, table1 b
WHERE a.Id != b.Id;
但这会产生结果:
Name Name
y x
z x
x y
z y
x z
y z
哪一个不是确切的结果。
答案 0 :(得分:3)
尝试使用<
代替!=
:
SELECT
a.Name,
b.Name
FROM table1 a
INNER JOIN table1 b
ON a.Id < b.Id
答案 1 :(得分:0)
declare @t table (id int,name varchar(1))
insert into @t (id,name)values (1,'X'),(2,'Y'),(3,'Z')
;WITH Cte AS(
SELECT *,
RN = ROW_NUMBER() OVER(ORDER BY name)
FROM @t
)
SELECT
t1.name,
t2.name
FROM Cte c
INNER JOIN Cte cc
ON cc.RN > c.RN
AND cc.name != c.name