2011-10-07 138 views
5

对于那些一直在帮助我与这个微博克隆的方式,谢谢!在您的帮助下,我已经设法让大部分工作得以实施,并最终进入追随者功能的最后一步。SQL选择一个值只会出现一次

现在,我有以下字段的数据集:用户名,鸣叫,日期

数据的一个例子可能看起来像:

Username Tweet    Date 
kenny  hi!    2011-10-07 19:07:00 
stan  hello    2011-10-05 18:07:00 
kenny  looks like rain 2011-10-05 17:07:00 
stan  hello    2011-10-05 14:07:00 
cartman  authoritay!  2010-10-05 14:07:00 

而且我一直与SQL摔跤该语句将产生一个数据集,其中每个用户只出现一次,并显示最新的推文。因此,基于上述情况,一些看起来是这样的:

Username Tweet    Date 
kenny  hi!    2011-10-07 19:07:00 
stan  hello    2011-10-05 18:07:00 
cartman  authoritay!  2010-10-05 14:07:00 

我一直在使用Google搜索的SQL,并试图COUNT,DISTINCT,MAX的变化,但都无济于事。任何帮助将不胜感激!谢谢!

+0

你使用MySQL或MS SQL数据库? –

+0

嗨,我正在使用一个mysql数据库 – kurisukun

+0

尝试使用不同的表达式,你使用的SQL脚本语句是什么? –

回答

6
select d1.username, d1.tweet, d1.date from data d1 where d1.date = 
    (select max(d2.date) from data d2 where d1.username = d2.username) 
+0

谢谢!我不明白这个语法,但让我研究它。 – kurisukun

3

难道不只是工作

select distinct username, tweet, date order by date desc 

(这是MSSQL语法)

在掌握新的数据:

SELECT DISTINCT tweets.username, content, date from tweets 
WHERE user_id IN (
    SELECT users.id FROM users 
    INNER JOIN user_users ON users.id = user_users.followed_user_id 
WHERE user_users.user_id = 1) 
ORDER BY date desc 
+0

其实,这几乎是我试过的确切陈述(我认为)。我从其他表格中提取数据时,实际数据集有点复杂。我试过这个,但它并没有让每个用户名只出现一次:SELECT DISTINCT username,content,'date' from tweets WHERE user_id IN(SELECT users.id FROM users INNER JOIN user_users ON users.id = user_users.followed_user_id WHERE user_users.user_id = 1) 按日期倒序 – kurisukun

+0

可能是因为你读了错误的用户名变量...查看修订的答案... –

+0

或者,也许不是......你真的在你的鸣叫表列是什么? –

1
SELECT f.* 
FROM (
     SELECT Username, MAX(`Date`) as maxval 
     FROM table GROUP BY Username  
    ) AS x INNER JOIN table AS f 
ON f.Username = x.Username AND f.`Date`= x.maxval