What is the difference between natural full outer join and full outer join with a common columns using clause?
They are the same.
The joins you mention are the same if and only if:
You join on all columns the tables have in common. This requires you follow strict naming conventions in your table design, so that columns you intend to be joined are named the same, and columns you don't intend to be joined are not named the same.
For example, this natural joins is not possible if you conventionally have columns like id
, created_at
, updated_at
in every table, even though they represent different values in the respective tables, and should not be joined.
The join condition is an equi-join. Since the join condition is implicit, it is assumed that the conditions are all table1.columnA = table2.columnA
and so on. There's no opportunity to use inequalities or any other conditions.