Выберите отдельные значения из двух столбцов - PullRequest
0 голосов
/ 21 июня 2010

У меня есть таблица со следующей структурой:

itemId  | direction | uid | created
133           0        17   1268497139
432           1        140  1268497423
133           0        17   1268498130
133           1        17   1268501451

Мне нужно выбрать разные значения для двух столбцов - itemId и direction, поэтому выходные данные будут такими:

itemId  | direction | uid | created
432           1        140  1268497423
133           0        17   1268498130
133           1        17   1268501451

В исходной таблице у нас есть две строки с itemId - 133 и direction - 0, но нам нужна только одна из этих строк с самым последним созданным временем.

Спасибоза любые предложения!

Ответы [ 2 ]

1 голос
/ 21 июня 2010
select t1.itemid, t1.direction, t1.uid, t1.created
from  (select t2.itemid, t2.direction, t2.created as maxdate 
       from tbl t2 
       group by itemid, direction) x
inner join tbl t1
  on  t1.itemid = x.itemid
  and t1.direction = x.direction
  and t1.created = x.maxdate
1 голос
/ 21 июня 2010

Использование:

SELECT t.itemid,
       t.direction,
       t.uid,
       t.created
  FROM TABLE t
  JOIN (SELECT a.itemid,
               MAX(a.created) AS max_created
          FROM TABLE a
      GROUP BY a.itemid) b ON b.itemid = t.itemid
                          AND b.max_created = t.created

Необходимо использовать агрегат (IE: MAX), чтобы получить наибольшее созданное значение для каждого элемента, и объединить его с неизмененной копией таблицы, чтобы получить значения, связанные смаксимальное созданное значение для каждого itemid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...