2013-03-19 52 views
3

我有兩個表 '主題' 和 '子類別'如何找到所需的唯一結果

我用這query--

Select * from `subcategory` as s 
Inner join `topic` as f 
WHERE s.`Subcategory_id` = f.`Subcategory_id 

我的結果表明像

CATEGORY_ID Subcategory_id POST_ID時間

2  2.3   4 2012-12-01 
    1  1.5   5 2013-01-20 
    1  1.3   6 2013-03-18 

還有oth呃列...但我想要的是選擇一個Category_id的最新Post_id和Subcategory_id ...這意味着在這裏類別1有兩個子類別它將只選擇最新的(這裏是1.3)和所有類別的所有類別相同的結果當數據庫會變大時。下一個查詢會是什麼,或者我如何更改現有的查詢以獲得我想要的結果?

回答

2
SELECT Post_Id, Subcategory_Id from subcategory as s, topic as t where 
    s.Subcategory_id = t.Subcategory_id and time = (
     SELECT Max(time) from subcategory as s1, topic as t1 where 
     s1.Subcategory_id = t1.Subcategory_id and s1.Category_id = s.Category_id 
    ); 

類似的東西,我認爲,將工作。

+0

儘管你的sql顯示了一個錯誤,但是在將你的sql的最後一部分與我的結合後感謝它顯示了我想要的結果。 – Nabil 2013-03-19 05:42:10

2
SELECT TOP 1 ... ORDER BY whatever column determines "the latest" 

例如,

SELECT TOP 1 ... ORDER BY TIME DESCENDING 

或者在MySQL的情況下:

SELECT ... ORDER BY TIME DESCENDING LIMIT 1 
+0

什麼叫頂級1是什麼意思? – Nabil 2013-03-19 05:08:21

+0

http://www.w3schools.com/sql/sql_top.asp - oops mysql似乎不支持這一點。不過,它支持「限制」:http://dev.mysql.com/doc/refman/5.0/en/select.html,我相應地編輯了答案。 – 2013-03-19 05:42:09

0

加入您的題目表以下查詢:

SELECT s.* FROM subcategory s 
    Inner JOIN (SELECT s1.Category_id, 
       MAX(s1.time1) AS max_time 
       FROM subcategory s1 
       GROUP BY s1.Category_id) y 
ON y.Category_id = s.Category_id AND y.max_time = s.time1 
相關問題