如何从多列中选择不同
问题描述:
嗨 我确定有这种操作的查询,但我似乎无法得到它。
我有一个表是这样的:如何从多列中选择不同
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
任何指针?
想到的
答
第一件事是联盟列:
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
作为一个侧面说明,如果这个数据被归这将是很容易得到的数据,你想要的方式。
hot diggity,做到了。谢谢一堆! – Seerumi 2010-10-12 12:26:17
如果您使用UNION,则不需要DISTINCT。 UNION已经消除了重复。您正在寻找的正确的文档参考是http://www.postgresql.org/docs/9.0/interactive/sql-select.html,“UNION子句”一节。 – 2010-10-12 20:04:20
对,谢谢我用你的信息更新了答案,以便它是正确的。 – Kuberchaun 2010-10-12 20:10:59