MySQL-запрос не работает с NOT IN

Я пишу запрос, который не работает правильно

Мой запрос:

SELECT * 
FROM admin_marker 
WHERE admin_marker.city NOT IN (SELECT target FROM messsage)

В нем говорится

# 1267 - Незаконное сочетание сортировок
(utf8_general_ci, IMPLICIT) и
(utf8_unicode_ci, IMPLICIT) для операции '='

Ответ 1

Проблема, с которой вы сталкиваетесь, связана с несовместимыми сопоставлениями между двумя таблицами. Один из способов обойти это - использовать предложение COLLATE в вашем запросе:

SELECT * 
FROM admin_marker 
WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci 
                                FROM messsage)

Демо здесь

Ответ 2

проблема заключается в сопоставлении между двумя таблицами, поэтому, пожалуйста, попробуйте COLLATE для этого, возможно, это легко разрешить с помощью справки COLLATE.

SELECT * FROM admin_marker WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci FROM messsage)

а также проверьте, что база данных того же самого

несовместимой сортировки или попыткой выбора данных различной сортировки в комбинированный столбец. Предложение COLLATE позволяет указать сортировку, используемую в запросе.

Ответ 3

Это обычно вызвано сравнением двух строк несовместимого сопоставления или попыткой выбора данных различной сортировки в комбинированный столбец. Предложение COLLATE позволяет указать сортировку, используемую в запросе.

Или вы можете ALTER TABLE соответствовать COLLATE