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

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。そのため、手動で一致させる必要があります。このフィドルを参照してください。

于 2013-03-01T11:48:00.293 に答える