我正在尝试设置一个查询,显示每个线程的第一个帖子,并按每个帖子中最后一个帖子的日期排序。我用这个查询得到了第一部分:
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 :(得分: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
您不能通过子查询进行排序,但可以按前一个子查询中的列/表达式进行排序。我不确定你打算如何排序它,但你已经掌握了所有的表达方式。