Как JOIN две таблицы SQL если один из столбцов текстовый и содержит лишние данные?
Есть две таблицы, которые необходимо JOIN. Проблема в том, что в первой таблице нужный столбец "id" в int64, а во второй таблице в виде текста с префиксом ("abc123", "abc456" - где цифры это id). Конвертировать "id" первой таблицы в текст и дописать к нему префикс, или обрезать префикс столбца второй таблицы и конвертировать в число - не получается.
Ошибка - JOIN: each equality predicate argument must depend on exactly one JOIN input
Ответы (1 шт):
Автор решения: Merlin
→ Ссылка
Попробуйте вынести преобразование в подзапрос(где вы сначала сформируете нужное поле), а не делать его прямо в соединении, например:
SELECT *
FROM table2 t2
JOIN (SELECT CONCAT('%', CAST(table1.int64 AS CHAR)) AS field1
FROM table1 t1)f1
ON t2.table2.text LIKE f1.field1