2010-12-14 101 views
0

指定的字段值和最高值我有2個表:
文章:
ID INTEGER
...
Article_versions:
文章INTEGER
郎ENUM
time TIMESTAMP
PRIMARY KEY(article,lang,time)
...

我想從相關最新一行Article_versions的文章和字段中選擇字段。
我應該使用join還是2 select語句?
我該怎麼做?加入排在其他領域

回答

0

這是混淆你想什麼信息檢索,但如果你知道一個特定的ID,那麼你可以使用:

SELECT ID,lang,time 
FROM articles,article_versions 
WHERE articles.ID=<article_id_you_provide> AND 
     articles.ID=article_versions.article AND 
     article_versions.time = (SELECT max(time) 
           FROM article_versions 
           WHERE article=<article_id_you_provide>); 

讓我知道這是你正在尋找的不是,我可以進一步修改我的答案。

+0

是的,它做我想要什麼。但是性能怎麼樣,這不是比聯接慢還是聯接相同? – kravemir 2010-12-15 16:12:25

+0

這樣做的好處在於某種意義上的連接,因爲它需要兩個表的交叉乘積和where子句過濾器。我之所以沒有使用join語法,是因爲您在article_versions中的外鍵與文章名稱不同,所以自然加入也會很麻煩。 – 2010-12-15 21:58:33

0

假設[Articles_versions] [時間]將在連接設置,你可以使用下面的返回的只有唯一列:

SELECT [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang], MAX([Articles_versions].[time]) 
FROM Articles Inner Join Articles_versions ON [Articles].[ID] = [Articles_versions].[article] 
GROUP BY [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang] 
+0

這不會獲取最新的文章版本。所以MAX(時間)是最新的,但article_versions的其他字段不是 – kravemir 2010-12-15 16:10:07