0

我有一个具有以下结构和数据的 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
4

3 回答 3

2
Select link_counter.lc_counter, MAX(link_counter.lc_timestamp)
 from link_counter group by link_counter.id
于 2013-03-01T10:13:58.123 回答
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

有一段时间没有这样做了,但这应该可以。

于 2013-03-01T10:16:52.723 回答
0

如果您没有 2 条相同lc_timestamp的特定记录,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. 所以,需要手动匹配。参考这个小提琴

于 2013-03-01T11:48:00.293 回答