sql将2列的输出组合成一列

时间:2011-02-17 13:21:14

标签: 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

我想形成一个查询,它返回一个接一个相关的人的ID。查询应返回:

1
3
2
3
4
1

此处(1,3)是对,后跟(2,3),依此类推。

你能形成这样的疑问吗?

3 个答案:

答案 0 :(得分:4)

单向(假设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

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

答案 1 :(得分:0)

select id1 from relation
union
select id2 from relation

(但订单不会是您示例中的订单)。

您还可以遍历这些对并构建一个列表:

// metalanguage
resultSet = executeQuery("select id1, id2 from relation");
List list = new List();
while (resultSet.hasNext()) {
    list.add(resultSet.get("id1");
    list.add(resultSet.get("id2");
}

答案 2 :(得分:0)

您可以先尝试创建CSV结果列

 1,3,2,3,4,1

然后从这个CVS检索行。

此查询的创建取决于您使用的DBMS。

我认为使用一些互联网搜索引擎(amazon,bing,google),我们将能够通过您自己的方式解决这个问题。