Re: [GENERAL] Simulating an outer join

Поиск
Список
Период
Сортировка
От Julian Scarfe
Тема Re: [GENERAL] Simulating an outer join
Дата
Msg-id 387D0B3B.7D7F3AD8@callnetuk.com
обсуждение исходный текст
Ответ на Simulating an outer join  (Bruce Momjian <pgman@candle.pha.pa.us>)
Ответы Re: [GENERAL] Simulating an outer join
Список pgsql-general
> Bruce Momjian wrote:
> >
> > I have been thinking about how to simulate an outer join.  It seems the
> > best way is to do:
> >
> >         SELECT tab1.col1, tab2.col3
> >         FROM tab1, tab2
> >         WHERE tab1.col1 = tab2.col2
> >         UNION ALL
> >         SELECT tab1.col1, NULL
> >         FROM tab1
> >         WHERE tab1.col1 NOT IN (SELECT tab2.col2 FROM tab2)
> >
> > Comments?  I know someone was asking about this recently.

Mike Mascari wrote:
>
> I wouldn't use IN ;-)
>
> SELECT table1.key, table2.value
> FROM table1, table2
> WHERE table1.key = table2.key
> UNION ALL
> SELECT table1.key, NULL
> FROM table1 WHERE NOT EXISTS
> (SELECT table2.key FROM table2 WHERE table1.key = table2.key);

FWIW, that's exactly Joe Celko's SQL-89 workaround for OUTER JOINs in 'SQL for
Smarties'. Well in fact he uses (SELECT * FROM table2 WHERE table1.key =
table2.key) as the subquery, but I presume that's an insignificant difference.

Julian Scarfe

В списке pgsql-general по дате отправления:

Предыдущее
От: Julian Scarfe
Дата:
Сообщение: Making points into paths
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: [GENERAL] identifying performance hits: how to ???