Вам нужно использовать подзапрос, так как вы хотите объединить данные двух столбцов в один (на основе логики), а затем хотите объединиться с другой таблицей для нового столбца. Пожалуйста, проверьте, работает ли этот следующий запрос для вас или нет-
SELECT
DISTINCT *
FROM
(
SELECT *,
CASE c.userid
WHEN '1' THEN c.user2id
ELSE c.userid
END uu
)A
INNER JOIN users AS u
ON A.uu = u.id
поскольку вы хотите объединить значение двух столбцов в один, а затем хотите присоединиться к другой таблице на основе нового столбца. Пожалуйста, проверьте, что следующий запрос работает для вас или нет-
Можете ли вы проверить следующий скрипт-
SELECT DISTINCT *
FROM users A
INNER JOIN chats B
ON A.id = CASE WHEN b.userid = '1' THEN B.user2id ELSE B.userid END