2016-01-21 31 views
2

试图与下面的查询WordPress的MySQL查询不能与CONCAT创建视图,并像

SELECT * from wp_posts AS vender 
LEFT OUTER 
JOIN wp_postmeta AS vender_campaign ON vender_campaign.meta_key = 'vender' 
    AND vender_campaign.meta_value LIKE CONCAT('%"',vender.ID,'"%') 
WHERE vender.post_status = 'publish' AND vender.post_type = 'vender' 

但收到错误创建视图:

Illegal mix of collations (utf8mb4_unicode_ci, IMPLICIT) and (utf8mb4_general_ci, IMPLICIT) for operation 'like'

但如果我执行在phpMyAdmin窗口此查询它工作正常。

任何想法是什么问题?

回答

3

看来,wp_posts和wp_postmeta有不同的编码,utf8mb4_unicode_ci和utf8mb4_general_ci。

该查询的工作原理是因为您可以将这些表的结果看作连接,但无法使用不同的编码创建视图。

我会改变这两个表中的一个的编码来匹配另一个。

编辑:我想你也可以格式化你的查询方式,在这种方式下,你可以将其中一个文本的编码转换为另一个文本的编码(但是如果你能够统一的话尽管如此编码) 在这里看到:http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

+0

我只是cheked和两个表具有相同的编码,默认的字符集= utf8mb4 COLLATE = utf8mb4_unicode_ci – hemant

+0

尝试的单层表而不加入SELECT * FROM wp_postmeta AS vender_campaign其中vender_campaign.meta_key = '卖主' AND vender_campaign .meta_value LIKE CONCAT('%'',360,''%')仍然会出现相同的错误 – hemant

+0

我想解决你的问题的关键是找到utf8mb4_general_ci(注意一般)来自哪里。 也许你在concat中输入的字符串会得到它,如果表格不是......但是,我只是猜测。 –