从MySQL表中获取最新更新值

时间:2013-03-01 10:12:30

标签: mysql group-by

我有一个包含以下结构和数据的mysql表。我想在任何id上显示最后插入的记录。

id    lc_counter       lc_timestamp
1     15               2013-03-01 11:54:43
1     13               2013-03-01 11:48:56
10    7                2013-03-01 11:54:43
10    5                2013-03-01 11:48:56
100   5                2013-03-01 11:54:43
100   3                2013-03-01 11:54:43


SELECT inv_id, lc_counter, lc_timestamp 
FROM link_counter 
group by inv_id
order by inv_id asc, lc_timestamp desc

我想得到这个结果:

id    lc_counter       lc_timestamp
1     15               2013-03-01 11:54:43
10    7                2013-03-01 11:54:43
100   5                2013-03-01 11:54:43

3 个答案:

答案 0 :(得分:2)

Select link_counter.lc_counter, MAX(link_counter.lc_timestamp)
 from link_counter group by link_counter.id

答案 1 :(得分:0)

SELECT
  inv_id, lc_counter, lc_timestamp
FROM
  link_counter A
WHERE
  lc_counter >= ALL(
    SELECT
      lc_counter
    FROM
      link_counter B
    WHERE
      B.inv_id = A.inv_id
  )
ORDER BY
  1

暂时没有这样做,但这应该有用。

答案 2 :(得分:0)

如果您对特定lc_timestamp没有2条相同的id条记录,则以下内容会为您提供所需的确切结果。

select lc.id, lc.lc_counter, lc.lc_timestamp from link_counter lc inner join
 (select id, max(lc_timestamp) as lc_timestamp from link_counter group by id) as lc2 
 on lc.id = lc2.id and lc.lc_timestamp = lc2.lc_timestamp order by lc.id asc, lc.lc_timestamp desc;;

group by本身不会返回匹配的lc_counter。因此,需要手动匹配。请参阅此fiddle