Если вы хотите использовать JOIN
, просто используйте JOIN
и задайте условие t1.old_location = t2.new_location
из in
подзапроса.
select t1.*
from table1 t1
INNER JOIN table2 t2 ON t1.old_location = t2.new_location
EDIT
но из вашего ожидаемого результата ваш sql, похоже, должен использовать NOT IN
вместо in
, если вы хотите от NOT IN
до JOIN
вы можете попробовать использовать OUTER JOIN
, затем получить t2.new_location IS NULL
, что означает, что значение не соответствует table1
create table Table1(
id int,
name varchar(50),
new_location varchar(50),
old_location varchar(50)
);
insert into Table1 values (1,'adb','fgh','ghj');
insert into Table1 values (2,'cde','ghj','yth');
insert into Table1 values (3,'fas','dcq','tm1');
insert into Table1 values (4,'fas1','tm1','hgy');
create table Table2(
id int,
name varchar(50),
new_location varchar(50)
);
insert into Table2 values (1,'adb','fgh');
insert into Table2 values (2,'cde','ghj');
insert into Table2 values (3,'fas','dcq');
insert into Table2 values (4,'fas1','tm1');
Запрос 1 :
SELECT t1.*
FROM table1 t1
LEFT JOIN
table2 t2
ON t1.old_location = t2.new_location
WHERE t2.new_location IS NULL
Результаты
| id | name | new_location | old_location |
|----|------|--------------|--------------|
| 2 | cde | ghj | yth |
| 4 | fas1 | tm1 | hgy |