如何在更改的列上连接两个表?

时间:2015-12-01 07:32:57

标签: sql postgresql

我在PostgreSQL中有两个表:

A  (ida, ida2)
B  (idb, idb2)

所有列都是integer。我需要在非标准连接中加入它们,这意味着如果ida2不为null,则连接为on (ida2=idb2)如果它为null,则连接为on (ida=idb)

我需要在视图中使用它,因此我无法使用IF声明。 我想过使用coalesce,但它只能选择1个不是2的整数。

CREATE OR REPLACE VIEW myview AS 
 SELECT .....
   FROM A 
   join B on .....? ;

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用UNION

CREATE OR REPLACE VIEW myview AS 
 SELECT .....
   FROM A 
   join B on ida2 is not null and ida2 = idb2
 UNION
 SELECT .....
   FROM A 
   join B on ida2 is null and ida = idb