Есть две таблицы, состоящие из столбцов:
id, sDate, title
id,sDate,message
имеющие одинаковые типы данных:
Int, timestamp, text
Если объединять по id или sDate, используя запрос
SELECT sDate as t FROM `tb1`
UNION ALL SELECT sDate as t FROM `tb2`
то все проходит нормально
Если объединять по title,message, используя запрос
SELECT title as t FROM `tb1`
UNION ALL SELECT message as t FROM `tb2`
то выскакивает ошибка "#1271 - Illegal mix of collations for operation 'UNION'"
Теперь вопрос - как все-таки объединить два текстовых столбца из разных таблиц в один?
Если не хотите (или нет возможности) менять collation столбцов, приводите их в запросе:
SELECT
cast(title as VARCHAR(200) CHARACTER SET utf8) COLLATE utf8_general_ci as t
FROM `tb1`
UNION ALL
SELECT cast(message as varchar(200) CHARACTER SET utf8) COLLATE utf8_general_ci as t
FROM `tb2`
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(200) CHARACTER SET utf8) COLLATE utf8_general_ci as t FROM `tb1` ' at line 2
Спасибо, чуть модифицировал и получилось SELECT title COLLATE utf8_general_ci as t FROM `tb1`
UNION ALL SELECT message COLLATE utf8_general_ci as t FROM `tb2`