1
我有一个左连接的SQL查询,工作得很好。但是,我在订购结果时遇到困难。如何通过左连接命令SQL查询
查询看起来是这样的:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) LEFT OUTER JOIN wp_posts recent ON recent.post_parent = wp_posts.ID AND recent.post_type = 'ticket_reply' AND recent.post_author = wp_posts.post_author WHERE 1=1 AND ((wp_postmeta.meta_key = '_wpas_status' AND CAST(wp_postmeta.meta_value AS CHAR) = 'open')) AND wp_posts.post_type = 'ticket' GROUP BY wp_posts.ID ORDER BY CASE WHEN recent.post_parent IS NULL THEN 0 ELSE 1 END, recent.post_date DESC, wp_posts.post_date DESC LIMIT 0, 20
的查询工作正常,并正确排序日期明智的。
最后显示不在交集中的条目(即ticket
类型的没有ticket_reply
子代的帖子)。我需要先显示这些内容,然后按原始查询中显示的日期显示其余内容。
我不确定这个请求是否足够清楚。如果没有,请让我知道需要澄清什么,我会尽我所能澄清。
不幸的是,这并没有改变顺序。但是,我意识到我可能会留下原始查询的重要信息:添加了第一个内部联接。也许这会改变'ORDER BY'行为。 我编辑了原始的SQL查询。 – Julien
@Julien您可以发布一些示例数据,以便我们能够重现此问题吗? –
我不确定究竟是什么样的最佳数据分享。这是我的wp_posts表的转储。它来自我的开发环境,所以它可能会有一些愚蠢的东西。 http://jmp.sh/AZyzf09 这个想法是让门票先没有回复(“我的第三张票”和“我的第一张票”),然后是“我的第二张票”,它有回复。 – Julien