Я нашел решение. Согласно этой статье , INNER JOIN
не будет работать с полями, которые имеют NULL
или пустые значения. Ответ выше не работал, так как CLAUSE, который предназначался для фильтрации столбцов NULL
, выполнялся после того, как INNER JOIN
был оценен с NULL
или пустыми столбцами. Поэтому, учитывая эту информацию, я отфильтровал столбцы NULL
в фактическом операторе INNER JOIN
, а не после.
SELECT *
FROM importedcontacts
INNER JOIN users
ON ( users.email = importedcontacts.emails
OR ( ( importedcontacts.phones = users.phone )
AND NOT importedcontacts.phones = ''
AND NOT users.phone = '' ) )
WHERE importedcontacts.username = 'user'
ORDER BY users.first_name
И это сработало! спасибо за помощь, ребята.