2011-10-07 78 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