用最新的答案SQL Query获取问题

时间:2009-03-14 10:07:22

标签: sql sql-server sql-server-2005

我有一个类似的模型:

问题      - ID       - CreatedOn

答案      - ID      - 创建于       - QuestionID

不,我想用最新的答案得到第一个问题。

我正在使用SQL Server 2005。

谢谢, 克里斯

4 个答案:

答案 0 :(得分:1)

Select top 1 *
from questions, answers
where question.id = answers.questionid
order by answers.createdon desc

答案 1 :(得分:0)

这样的事情:

SELECT TOP 1 Question FROM Questions JOIN Answers ON Questions.Id = Answers.QuestionID ORDER BY Answers.CreatedOn DESC;

答案 2 :(得分:0)

select top 1 Question from questions
  inner join answers on questions.Id = answers.QuestionId
order by answers.CreatedOn desc

对于延迟回复评论感到抱歉,我没有时间提前测试:

这变得更复杂,但这样的事情应该有效:

select top 5 Question from questions
  inner join answers on questions.Id = answers.QuestionId
GROUP BY Question
ORDER BY max(answers.CreatedOn) desc

这似乎是standard pattern,可以有效地从表中获取一组不同的数据,而不包括记录集中的按行排序。

请注意,要选择的元素数(在本例中为5)必须是SQL中的常量。如果您有使用LINQ to SQL之类的优势,可以在LINQ中编写它并将获取量作为变量。

因此,在回复最新评论时,您只需将max(answers.CreatedOn)添加到select语句中:

select top 5 Question, max(answers.CreatedOn)
from questions
  inner join answers on questions.Id = answers.QuestionId
GROUP BY Question
ORDER BY max(answers.CreatedOn) desc

答案 3 :(得分:0)

我会尝试这样的事情

SELECT Id, CreatedOn    
FROM Question Q    
WHERE Q.id IN    
(SELECT DISTINCT TOP 5 A.QuestionID FROM Answer A ORDER BY A.CreatedOn)