MySQL - недопустимое сочетание параметров сортировки (подразумевается latin1_swedish_ci) и (utf8_general_ci принудительно применяется для операции '='
Когда я выполняю запрос ниже, я получаю эту ошибку:
Код ошибки: 1267. Недопустимое сочетание параметров сортировки (latin1_swedish_ci,IMPLICIT) и (utf8_general_ci,COERCIBLE) для операции '='
Если вам нужен фон за этим кодом, вот объяснение:
MySQL - Как я могу автоматизировать запрос представления, который вычитает метрики от самой последней даты к предыдущему дню, а метки даты - самые последние данные
Я установил для сортировки таблицы "facebook_insight" значение "utf8_general_ci", но все равно получаю ошибку. Может кто-нибудь мне помочь?
MySQL Query:
CREATE VIEW `facebook_insights` AS
SELECT
t1.id
, t1.timestamp
, t1.message
, t1.posted
, t1.permalink_url
, t1.caption
, t1.link
, t1.type
, t1.post_impressions - t2.post_impressions as Impressions
, t1.post_impressions_organic - t2.post_impressions_organic as Post_Impressions_Organic
, t1.post_impressions_paid - t2.post_impressions_paid as Post_Impressions_Paid
, t1.post_engaged_users - t2.post_engaged_users as Post_Engaged_Users
, t1.post_consumptions - t2.post_consumptions as Post_Consumptions
, t1.post_negative_feedback - t2.post_negative_feedback as
Post_Negative_Feedback
, t1.post_negative_feedback_unique - t2.Post_Negative_Feedback_Unique as
Post_Negative_Feedback_Unique
, t1.post_impressions_fan - t2.post_impressions_fan as Post_Impressions_Fan
, t1.post_impressions_fan_paid - t2.post_impressions_fan_paid as
Post_Impressions_Fan_Paid
, t1.post_engaged_fan - t2.Post_Engaged_Fan as Post_Engaged_Fan
, t1.post_video_complete_views_organic -
t2.post_video_complete_views_organic as Post_Video_Complete_Views_Organic
, t1.post_video_complete_views_paid - t2.post_video_complete_views_paid as
Post_Video_Complete_Views_Paid
, t1.post_video_views_10s - t2.post_video_views_10s as Post_Video_Views_10s
, t1.post_video_views_10s_unique - t2.post_video_views_10s_unique as
Post_Video_Views_10s_Unique
, t1.post_video_views_organic - t2.post_video_views_organic as
Post_Video_Views_Organic
, t1.post_video_views_paid - t2.post_video_views_paid as
Post_Video_Views_Paid
, t1.post_video_views_clicked_to_play - t2.post_video_views_clicked_to_play
as Post_Video_Views_Clicked_to_Play
FROM
unpaid_media.facebook_insight t1
JOIN unpaid_media.facebook_insight t2
ON t1.id = t2.id
and t1.timestamp = t2.timestamp + INTERVAL 1 DAY
1 ответ
Как я могу догадаться из вашего родственного вопроса, тип вашего timestamp
столбец не любой из date, datetime or timestamp
, Это, вероятно varchar
или же text
,
Поэтому, когда вы пытаетесь добавить INTERVAL 1 DAY
к значению, которое не является типом времени, вы получите ошибку.
Вы должны конвертировать ваши timestamp
столбец к любому из date, datetime or timestamp
типы данных.
В качестве быстрого решения вы можете использовать STR_TO_DATE()
функция в вашем запросе:
CREATE VIEW `facebook_insights` AS
...
and STR_TO_DATE(t1.timestamp,'%m/%d/%Y') = STR_TO_DATE(t2.timestamp,'%m/%d/%Y') + INTERVAL 1 DAY
Но лучше изменить таблицу, чтобы иметь правильные типы данных.