我的SQL查询有什么问题?

时间:2010-03-12 01:36:09

标签: sql

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

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

JOIN test_posts ON test_posts.ID = tmin.MinID 

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

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

1 个答案:

答案 0 :(得分: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

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