2017-06-28 42 views
1

我在這裏有兩個相關的表格,applicationapplication_note從應用程序中選擇最新的筆記/評論

我想找到每個應用程序的最新備註(用戶和文本/註釋)。

application_note看起來像

+----------------+-------------+------+-----+-------------------+-----------------------------+ 
| Field   | Type  | Null | Key | Default   | Extra      | 
+----------------+-------------+------+-----+-------------------+-----------------------------+ 
| id    | int(11)  | NO | PRI | NULL    | auto_increment    | 
| create_time | timestamp | NO |  | CURRENT_TIMESTAMP |        | 
| update_time | timestamp | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
| application_id | int(11)  | YES | MUL | NULL    |        | 
| note   | text  | YES |  | NULL    |        | 
| user   | varchar(50) | YES |  | NULL    |        | 
+----------------+-------------+------+-----+-------------------+-----------------------------+ 

我一直在試圖一羣不同的查詢。我最接近的是

SELECT user, note, application_id, MAX(create_time) 
FROM application_note 
GROUP BY application_id 

它看起來像max(create_time)是我所期望的,但其他值是關閉的。我一直在嘗試這一段時間,並沒有得到任何地方。

編輯:我計劃最終添加此視圖或將其添加到更大的查詢,如果這會改變任何東西。

+0

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-似乎對我來說是一個非常簡單的sql查詢 – Strawberry

回答

2

你必須加入表背本身:

SELECT b.application_id, b.ct, a.note, a.user 
FROM (SELECT application_id, MAX(create_time) AS ct 
FROM application_note 
GROUP BY application_id) b 
INNER JOIN application_note a ON a.application_id=b.application_id 
    AND a.create_time=b.ct 

這將最新的創建時間返回的記錄對於給定的應用程序ID。對於給定的application_id,如果您有多個具有相同creation_time的記錄,則可能會出現重複問題

+0

輝煌,這似乎做的伎倆 – Shatnerz

相關問題