sql将2列的输出合并为一列

Man*_*ish 1 sql sqlite

我有以下表格

person: id,name
1, mani
2, senthil
3, jack
4, alan

relation: relname,id1,id2 (id1 and id2 refers to person.id)
rel1, 1,3
rel2, 2,3
rel1, 4,1
Run Code Online (Sandbox Code Playgroud)

我想形成一个查询,返回一个又一个相关的人的 id。查询应返回:

1
3
2
3
4
1
Run Code Online (Sandbox Code Playgroud)

(1,3)是对,然后是(2,3)等等。

你能形成这样的查询吗?

Mar*_*ith 5

一种方式(假设id1,id2是复合PK以避免重复)

SELECT id
FROM
(
select id1 as id, id1,id2 from relation
union all
select id2 as id, id1,id2 from relation
) T
ORDER BY id1,id2
Run Code Online (Sandbox Code Playgroud)

如果您的 RDBMS 支持,UNPIVOT您可以通过对表进行一次扫描来完成此操作。