我的SQL查询有什么问题?

Wil*_*iam 1 sql

我正在尝试设置一个查询,显示每个线程的第一个帖子,并按每个线程中最后一个帖子的日期排序.我用这个查询得到了第一部分:

SELECT *
FROM (
SELECT Min( ID ) AS MinID
FROM test_posts
GROUP BY Thread
)tmin

JOIN test_posts ON test_posts.ID = tmin.MinID 
Run Code Online (Sandbox Code Playgroud)

现在我需要弄清楚如何将每个线程的最后一个帖子调用到表中,而不是使用该表来排序第一个表的结果.到目前为止,我得到了这个,但它不起作用.

SELECT *
FROM (
SELECT Min( ID ) AS MinID
FROM test_posts
GROUP BY Thread
)tmin

JOIN test_posts ON test_posts.ID = tmin.MinID 

ORDER BY (SELECT MAX( ID ) AS MaxID, Thread, MAX( Date )
FROM test_posts
GROUP BY Thread
)tmax

tmax.Date
Run Code Online (Sandbox Code Playgroud)

Ada*_*sch 5

select minid
  from (select min(id) as min_id, 
               max(id) as max_id, 
               max(date) as max_date
               thread
          from test_posts
         group by thread ) t_min_max
       inner join test_posts on test_posts.id = t_min_max.min_id
 order by max_id, thread, max_date
Run Code Online (Sandbox Code Playgroud)

您不能通过子查询进行排序,但可以按前一个子查询中的列/表达式进行排序.我不确定你打算如何排序它,但你已经掌握了所有的表达方式.