Search Postgresql Archives

Re: Question About UNION

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Raymond O'Donnell wrote:
On 09/10/2008 17:59, Bill Thoen wrote:
I'm trying to combine two tables, but I only want unique records based
on the first two columns. Can UNION be used to join three-column tables
but only include records based on the uniqueness of the first two
columns? If not, how would I do this with PostgreSQL 8.1?
How do you decide which records you want? - e.g. given the following
rows...

  (a, b, c)
  (a, b, d)

...how do you decide whether you the one with c or the one with d?

The physical order that they appear will take care of that.

Hmmmm....

Leaving that aside, how about SELECTing the columns you want to be
unique from the two tables, and then JOINing the UNION of those back
with the UNION of the complete (three-column) tables?
No, this won't work. Here's an example of my tables:
Table1
1, 12, A
2, 16, B
8, 6, A
19, 9, C

Table2
1, 13, D
2, 16, B
8, 6, B
12, 5, A

A simple UNION will remove the duplicate row 2, 16, B, but it won't block row 8, 6, B in table 2 from being included in the output. What I want is for records in table 1 to take precedence and for the output records to be unique based only on the first two columns. In other words, I want this output:
Table3
1, 12, A
2, 16, B
8, 6, A
19, 9, C
1, 13, D
12, 5, A

Trying your suggestion:
create table tmp as
 select col1, col2 from table1
 union
 select col1, col2 from table2;

create table tmp2 as
 select * from table1
 union
 select * from table2;

I'll get:
tmp
1, 12
2, 16
8, 6
19, 9
1, 13
12, 5

tmp2
1, 12, A
2, 16, B
8, 6, A
19, 9, C
1, 13, D
8, 6, B
12, 5, A

I now have two rows with the same first two columns (8,6,A and 8,6,B and if I try to JOIN tmp and tmp2 I'm going to get duplicates on the 8,6 key. Or am I misunderstanding what you suggested?




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux