2015-08-21 219 views
-1

我試圖從我的數據庫中選擇一些數據,但我被困在一個部分。我不確定要替換什麼(Last postID)。從數據庫中選擇數據

SELECT DISTINCT name FROM table WHERE postID = (Last postID); 

表:

name | postID 
name1 | 1 
name1 | 2 
name1 | 3 
name1 | 4 
name2 | 1 
name2 | 2 
name2 | 3 
name3 | 1 
name3 | 2 
name3 | 3 

預期結果:

name1 | 4 
name2 | 3 
name3 | 3 
+0

請用你正在使用的數據庫標記你的問題。 –

回答

0

有一個更簡單的方法來完成你想要的。基本上你只想得到一個結果每name,所以只是組。

SELECT 
    name, MAX(postID) AS lastPostID 
FROM 
    tbl 
GROUP BY 
    name 

name每個將形成的結果組,從而是唯一的,但由最後帖子ID陪同。如果它們被順序編入索引,則最大的postID將顯然是最新的。

+0

確實。謝謝。 – jessica

2

您預期的結果,從您的問題聲明不同,一個有兩列,另外一個。

但是,在回答你的問題是一個子查詢:

SELECT DISTINCT t.name 
FROM table t 
WHERE t.postID = (SELECT MAX(t2.postId) FROM table t2); 

這假定「最後發表的帖子ID」指的是具有最大價值。

+0

這是行不通的,因爲最後一個帖子ID不會總是3.有些可能是3.有些可能是4.有些可能是5.如果最大值是5,它只會得到帶有標題的名稱5,而不是其他的。 – jessica

+0

@jessica。 。 。我完全不理解你的評論。我認爲這個問題非常清楚,樣本數據和預期結果非常明確。 –

+0

基本上我需要它來說一些與獨特名稱相關的最大postID。 – jessica