我的SQL查询有什么问题?

问题描述:

我想设置一个查询,显示每个线程的第一篇文章,并按每个线程中最后一篇文章的日期排序。我得到的第一部分来与此查询:我的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 
+0

没有仔细检查你的语法,但那是什么tmax.Date在那里呢?你是否也试图将它分组?如果是这样,则需要在tmax和tmax.Date之间有逗号。 此外,最好告诉我们你的错误,而不是仅仅说“它不工作”。 – Paddyslacker 2010-03-12 01:45:19

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 

不能通过子查询订购,但您可以通过列/表达式从前面的子查询订购。我不确定你打算如何分类,但你已经有了所有的表情。