0

下面的 mysql 将返回我的数据库中的前 10 个帖子,以及与这 10 个帖子相关的评论,以及与帖子相关的用户,整个事情按帖子的标题排序。

SELECT * FROM 
    (SELECT * FROM posts LIMIT 0,10 ORDER BY posts.title) as post 
       LEFT JOIN comments AS comment ON comment.postId = post.id, 
       authors AS author 
WHERE post.authorId = author.id

如何按 author.name 排序?将 posts.title 更改为 author.name 会给我一个错误:

Table 'comment' from one of the SELECTs cannot be used in global ORDER clause
4

2 回答 2

0

您需要在子查询中切换 ORDER BY 和 LIMIT。但是,您还希望将 ORDER BY 移动到主查询,而不是子查询。所以你要:

SELECT * FROM (SELECT * FROM posts LIMIT 0,10) as post 
LEFT JOIN comments as comment on comment.postId = post.id, authors as author 
WHERE post.authorId = author.id ORDER BY author.name, posts.title
于 2013-03-13T15:03:06.410 回答
0

更新答案 - 误读问题

您正在对内部选择进行排序,该选择仅使用帖子表,它也仅对选择进行排序,而不是对整个选择进行排序。您想要的是按外部选择上的 author.name 排序。

于 2013-03-13T15:03:15.627 回答