我正在尝试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' 操作的排序规则的非法混合
问题出在哪儿?谢谢你的帮助。
这是适用于 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)