2008-11-17 140 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