2008-11-17 74 views
0

我有两个表:文章和articletagsSQL查询来获取最大的不同日期 - 种

articles: id, author, date_time, article_text 
articletags: id, tag 

(article.id == articletags.id in a many-to-many relationship) 

的东西是每个标签下发布的最后一次后我。换一种说法,对于每个标签,查看与其相关的所有文章并找到最近的并返回。

如 文章:

1, me, 12 Nov, Sometext 
2, me, 13 Nov, Sometext 
3, me, 14 Nov, Sometext 

文章标签

1, foo 
1, bar 
2, foo 
3, bar 

我想回去:

foo, 13 Nov 
bar, 14 Nov 

我能得到尽可能内部联接,然后很为难。我不认为DISTINCT子句是我所追求的,我不太熟悉子查询知道这是否有帮助。

SELECT date_time, tag 
FROM articles, articletags 
WHERE articles.id = articletags.id 

这可能吗?

回答

4
select t.tag, max(a.date_time) as latest 
from articles a 
inner join articletags t 
on t.id = a.id 
group by t.tag 
0
SELECT date_time, tag 
FROM articles, articletags 
WHERE articles.id = articletags.id 
ORDER BY date_time DESC 
GROUP BY tag 
+0

这实际上结束了回国最早的记录,不是最近。这是它出现的默认行为,所以它需要像Gorden Bell的解决方案那样的最大子句。 其次,如果您使用的是MySQL,则需要将Order By和Group by置换以使其正常工作。我不知道为什么,但你这样做。 – Hyposaurus 2008-11-17 02:58:12