2011-10-07 1 views
5

このtwitter-cloneで私を助けてくれた人のために、ありがとうございます!あなたの助けを借りて、私はほとんどのものが機能し、最終的にはフォロワー機能の最後のステップに到達することができました。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と格闘してきましたこれは、各ユーザーが最新のツイートで1回だけ表示されるデータセットを生成します。だから、上記に基づいて、このようなもの:

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 

私はSQL検索をグーグルでてきたし、DISTINCT COUNTのバリエーションを、試してみましたが、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' WHERE user_id IN(SELECT users.id FROM users INNER JOIN user_users ON users.id = user_users.followed_user_id WHERE ORDER BY date desc – 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 
関連する問題