2015-08-21 170 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