Can somebody explain the difference between below query examples.
x
select column1,column2
from table1
join table2
on table1.columna = table2.columna
and columna='1234'
vs
select column1,column2
from table1
join table2
on table1.columna = table2.columna
where columna='1234'
Advertisement
Answer
To answer the question in your comment, with the following tables:
table1 and table2
+---------+---------+ +---------+---------+
| column1 | columna | | column2 | columna |
+---------+---------+ +---------+---------+
| 10 | 1234 | | 100 | 1234 |
| 20 | 1234 | | 200 | 5678 |
| 30 | 5678 | +---------+---------+
| 40 | 9876 |
+---------+---------+
The inner join queries will produce:
+---------+---------+
| column1 | column2 |
+---------+---------+
| 10 | 100 |
| 20 | 100 |
+---------+---------+
An outer join query including the filter in the on
clause will produce:
+---------+---------+
| column1 | column2 |
+---------+---------+
| 10 | 100 |
| 20 | 100 |
| 30 | |
| 40 | |
+---------+---------+
whereas an outer join query with the filter after the join will produce:
+---------+---------+
| column1 | column2 |
+---------+---------+
| 10 | 100 |
| 20 | 100 |
+---------+---------+
Note that since columna
is in both tables, you have to indicate which columna
the filter is associated to. I assumed table1’s.