Join condition specified with ON can also contain conditions that do not relate directly to the join : Left Join « Table Joins « PostgreSQL






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=#
           
       








Related examples in the same category

1.LEFT JOIN sample
2.LEFT JOIN two tables USING a column name