我有一个具有以下结构的表:
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,但我们只需要其中一行具有最新创建的时间。
感谢您的任何建议!
答案 0 :(得分:1)
使用:
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的最大创建值,并将其连接到表的未更改副本,以获取与每个itemid的最大创建值相关联的值。
答案 1 :(得分:1)
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