我有一个类似的模型:
问题 - ID - CreatedOn
答案 - ID - 创建于 - QuestionID
不,我想用最新的答案得到第一个问题。
我正在使用SQL Server 2005。
谢谢, 克里斯
答案 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)