在 MySQL 中得到一个错误:#1271 - 'UNION' 操作的排序规则的非法混合

use*_*183 -5 mysql sql union

我正在尝试UNION从 Drupal 和 phpBB 表中发表评论和帖子。

这是我的 SQL:

(
SELECT  f.forum_name AS section,
        p.topic_id,
        p.forum_id,
        p.post_id,
        p.poster_id AS uid,
        u.username AS user,
        p.post_time AS post_time,
        p.post_subject AS subject
FROM phpbb_posts p
JOIN phpbb_forums f ON f.forum_id = p.forum_id
JOIN phpbb_topics t ON p.post_id = t.topic_last_post_id
JOIN phpbb_users u ON p.poster_id = u.user_id
)
UNION (

SELECT  NULL AS section,
        comments.nid AS topic_id,
        NULL AS forum_id,
        comments.cid AS post_id,
        comments.uid AS uid,
        comments.name AS user,
        comments.timestamp AS post_time,
        comments.subject AS subject
FROM dr_node node
LEFT JOIN dr_comments comments ON node.nid = comments.nid
WHERE node.status =1
)
ORDER BY post_time DESC
LIMIT 7
Run Code Online (Sandbox Code Playgroud)

它给了我

错误:#1271 - 'UNION' 操作的排序规则的非法混合

问题出在哪儿?谢谢你的帮助。

Riv*_*ver 5

这是适用于 OP 的解决方案(取自问题):

我刚刚找到了解决方案。问题出在主题栏上。我COLLATE utf8_unicode_ci在第二个主题中添加了主题SELECT

(
SELECT  f.forum_name AS section,
        p.topic_id,
        p.forum_id,
        p.post_id,
        p.poster_id AS uid,
        u.username AS user,
        p.post_time AS post_time,
        p.post_subject AS subject
FROM phpbb_posts p
JOIN phpbb_forums f ON f.forum_id = p.forum_id
JOIN phpbb_topics t ON p.post_id = t.topic_last_post_id
JOIN phpbb_users u ON p.poster_id = u.user_id
)
UNION (

SELECT  NULL AS section,
        comments.nid AS topic_id,
        NULL AS forum_id,
        comments.cid AS post_id,
        comments.uid AS uid,
        comments.name AS user,
        comments.timestamp AS post_time,
        comments.subject COLLATE utf8_unicode_ci AS subject 
FROM dr_node node
LEFT JOIN dr_comments comments ON node.nid = comments.nid
WHERE node.status =1
)
ORDER BY post_time DESC
LIMIT 7
Run Code Online (Sandbox Code Playgroud)