我的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
答
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
不能通过子查询订购,但您可以通过列/表达式从前面的子查询订购。我不确定你打算如何分类,但你已经有了所有的表情。
没有仔细检查你的语法,但那是什么tmax.Date在那里呢?你是否也试图将它分组?如果是这样,则需要在tmax和tmax.Date之间有逗号。 此外,最好告诉我们你的错误,而不是仅仅说“它不工作”。 – Paddyslacker 2010-03-12 01:45:19