SQL Выберите, чтобы значение отображалось только один раз. - PullRequest
5 голосов
/ 07 октября 2011

Для тех, кто помогал мне на этом пути с этим твиттер-клоном, спасибо !! С вашей помощью мне удалось заставить большинство вещей работать и, наконец, перейти к последним шагам функции подписчиков.

Сейчас у меня есть набор данных со следующими полями: имя пользователя, твит, дата

Пример данных может выглядеть следующим образом:

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

Я гуглил поиски sql и пробовал варианты COUNT, DISTINCT, MAX, но безрезультатно. Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 3 ]

6 голосов
/ 07 октября 2011
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)
4 голосов
/ 07 октября 2011

Не сработает ли просто

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
1 голос
/ 07 октября 2011
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
...