问题
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