[EMAIL PROTECTED] wrote on 04/04/2005 01:14:23 PM: > Hello all, > > mysql 4.0.20 > > I'd like to know how one can do a "full outer join". > I've read some workaround with a UNION, but i need the join only on a few > columns, while UNION will make double tuple if one column is not the same. > > I also would like to avoid temporary table if possible, since the query is > on many millions of rows, and i saw performances suffer when working on > multiple temporary tables. > > If anyone has an idea, he would be great. > > Thanks you > Vincent > > >
Sorry Vincent, The only way I can think to make it work is through a UNION. I don't fully trust RIGHT JOINS (on any system) so I use two LEFT JOINs but flip the order on the second table. Basically this is what the engine has to do to compute a FULL OUTER JOIN anyway but you have to write the code externally instead of it being encapsulated within the query engine.7 ( SELECT <column list> FROM table a LEFT JOIN table b ON a.keycol = b.keycol ) UNION ( SELECT <column list> FROM table b LEFT JOIN table a ON b.keycol = a.keycol WHERE a.keycol is null ) The UNION will only return the columns you ask it to. This method also avoids manually creating a temporary table. So long as you do not say UNION ALL, you won't get any duplicate rows. HTH, Shawn Green Database Administrator Unimin Corporation - Spruce Pine