Во-первых, обратите внимание, что использование любого оператора сравнения, кроме равенства, в предложении JOIN
обычно снижает производительность запроса, и я лично считаю это плохим стилем. В конце концов, это предложение JOIN
, а не предложение WHERE
, означающее, что оно должно сообщать СУБД, какие строки «связывать» вместе (а какие нет, чтобы не «связывать»).
Это верно, даже если СУБД допускает использование всевозможных операторов сравнения в предложении JOIN
.
Сказав это, просто переместите сравнение !=
в предложение WHERE
(где оно принадлежит в любом случае по причинам, указанным выше):
SELECT *
FROM tb1
LEFT JOIN tb2
ON tb1.id=tb2.id
WHERE tb1.pid!=tb2.pid;
Это даст те же результаты, что и ваш исходный запрос.