2010-10-12 83 views
2

嗨 我确定有这种操作的查询,但我似乎无法得到它。
我有一个表是这样的:如何从多列中选择不同


product_id | saved_by | deleted_by | accepted_by | published_by 
-----------+----------+------------+-------------+------------- 
1   | user1 |   | user1  | 
-----------+----------+------------+-------------+------------- 
2   |   | user2  |    | 
-----------+----------+------------+-------------+------------- 
3   | user2 |   |    | user3 
-----------+----------+------------+-------------+------------- 
4   |   |   | user1  | user4 
-----------+----------+------------+-------------+------------- 

而且我试图创建一个查询,会选择在这些领域的所有用户明显导致这样的事情:


users 
------ 
user1 
user2 
user3 
user4 

任何指针?

想到的

回答

3

第一件事是联盟列:

SELECT t.users 
    FROM 
    (
    SELECT saved_by AS users 
    FROM table 
    UNION 
    SELECT deleted_by 
    FROM table 
    UNION 
    SELECT accepted_by 
    FROM table 
    UNION 
    SELECT published_by 
    FROM table 
) AS t; 

http://postgresql.org/docs/9.0/interactive/sql-select.html

作为一个侧面说明,如果这个数据被归这将是很容易得到的数据,你想要的方式。

+0

hot diggity,做到了。谢谢一堆! – Seerumi 2010-10-12 12:26:17

+1

如果您使用UNION,则不需要DISTINCT。 UNION已经消除了重复。您正在寻找的正确的文档参考是http://www.postgresql.org/docs/9.0/interactive/sql-select.html,“UNION子句”一节。 – 2010-10-12 20:04:20

+0

对,谢谢我用你的信息更新了答案,以便它是正确的。 – Kuberchaun 2010-10-12 20:10:59

相关问题