请帮助我解决我在工作中遇到的问题。我正在使用SQL Server,我知道使用游标我可以实现这一点,但我很确定在SQL中使用简单查询有一种方法,但我的大脑灯泡不想打开。让我用一个例子来解释我的问题。
我有一张这样的桌子:
postedby | date | comment |
1 | 01.01.2012 | sth sth |
2 | 01.01.2012 | sth sth |
3 | 01.01.2012 | sth sth |
2 | 01.01.2012 | sth sth |
3 | 02.01.2012 | sth sth |
2 | 03.01.2012 | sth sth |
2 | 05.01.2012 | sth sth |
我想要完成的是获取所有帖子,但每个用户都有一个帖子(发布列),日期必须是最新的,当然还要显示评论。
我尝试过:
Select distinct postedby, date, comment
但没有用,因为我理解每个列的不同作品,所以如果在postfrom的两行中相同但注释不同则会将其视为区别
我尝试过:
Select postedby,date,comment group by postedby
(不要理解from子句)
给我错误或聚合,所以我试过
select postedby,min(date) group by postedby
- 当然有效,但我无法得到评论。
我应该以某种方式使用聚合查询吗?或者我错过了什么?
答案 0 :(得分:7)
看起来今天是RowNumber功能日!! 如果您需要的是每个帖子的最新日期和评论:
SELECT postedBy, date, comment
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY postedby, ORDER BY date DESC) AS RowNumber,
postedBy, date, comment
FROM MyTable) t
WHERE RowNumber = 1
答案 1 :(得分:0)
您尝试了min(date)
。它将返回唯一值的最小日期。你试过max(date)
吗?这会更好。最长日期始终返回最新日期。