Get last update values from MySQL table

情到浓时终转凉″ 提交于 2019-12-12 03:44:38

问题


I have a mysql table with the following structure and data. I want to show last inserted record on any 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

I want to get this result:

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

回答1:


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



回答2:


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

Haven't done this in a while, but that should work.




回答3:


If you don't have 2 identical lc_timestamp records for a particular id the following will give you the exact result you want.

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 itself doesn't return the matching lc_counter. So, it needs to be matched manually. Refer this fiddle.



来源:https://stackoverflow.com/questions/15155178/get-last-update-values-from-mysql-table

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!