Mega Code Archive

 
Categories / PostgreSQL / Table Joins
 

Join condition specified with ON can also contain conditions that do not relate directly to the join

postgres=# postgres=# CREATE TABLE t1 ( postgres(#     num         int, postgres(#     name       varchar(10) postgres(# ); CREATE TABLE postgres=# postgres=# insert into t1 values(1,'a'); INSERT 0 1 postgres=# insert into t1 values(2,'b'); INSERT 0 1 postgres=# insert into t1 values(3,'c'); INSERT 0 1 postgres=# postgres=# CREATE TABLE t2 ( postgres(#     num         int, postgres(#     name       varchar(10) postgres(# ); CREATE TABLE postgres=# postgres=# insert into t2 values(1,'xxx'); INSERT 0 1 postgres=# insert into t2 values(3,'yyy'); INSERT 0 1 postgres=# insert into t2 values(5,'zzz'); INSERT 0 1 postgres=# postgres=# -- The join condition specified with ON can also contain conditions that do not relate directly postgres=# -- to the join. This can prove useful for some queries but needs to be thought out carefully. postgres=# postgres=# SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num AND t2.name = 'xxx';  num | name | num | name -----+------+-----+------    1 | a    |   1 | xxx    2 | b    |     |    3 | c    |     | (3 rows) postgres=# postgres=# drop table t1; DROP TABLE postgres=# drop table t2; DROP TABLE postgres=# postgres=#