Вам кажется, что равные не работают из-за вашего условия соединения и соединения.
если мы создадим две таблицы и создадим как ваш запрос
create table t1(id int,pid int);
create table t2 (id int,pid int );
insert into t1 values(1,2),(2,3),(3,4);
insert into t2 values(1,2),(2,3),(3,4);
select t1.* from t1 left join
t2 on t1.id=t2.id and
t1.pid!=t2.pid
order by t1.id
id pid
1 2
2 3
3 4
Возвращает все значения 1-й таблицы, поскольку LEFT JOIN возвращает все записи из левой таблицы (table1) и сопоставленные записи из правой таблицы (table2). Результат равен NULL с правой стороны, если совпадений нет.
Но если вы поместите внутреннее соединение в то же самое, оно не вернет ни одной строки. так что я думаю проблема не в "не равном операторе"