回答

收藏

选择具有最大时间戳的值

技术问答 技术问答 259 人阅读 | 0 人回复 | 2023-09-13

我有一张表:
5 d( B5 F0 `3 y0 i& M6 Mid|val|updated
. I( k2 M+ r* {* f0 S: F/ }1 | 31|2012-01-12
) k) P# X. M; C0 }' ^% A3 f, ?1 | 34|2012-01-15
9 _0 a, a& j1 [2 k4 Z7 p2 _2 | 41|2012-01-159 ]5 i  I6 t9 m/ H, e5 ?
3 | 44|2012-01-15* Z$ B1 [! n" Q2 g
4 | 66|2012-01-01
3 _( g1 G7 R+ i+ u我需要选择具有最大更新值的id和val。因此,对于此表,结果应为:8 S8 g) I* S3 t8 E* U! Y$ p
1| 34| 2012-01-15
& b4 i% b  r( V6 H: u2| 41| 2012-01-15
, T% v4 S' r+ ?% R3| 44| 2012-01-15% {9 k. F- y3 K/ I# z# M" y
4| 66| 2012-01-01
! F9 L  C4 p8 L6 |                * {4 g6 z9 f4 M) s0 W( v5 @
解决方案:
3 g( \4 s4 Q! \9 r$ r                " L# U* X& M1 a4 p! W: E$ U: ~/ d

: ]! g9 B. M9 g/ \, R7 t
3 U, Q! G+ o0 c2 c# B9 O                这需要MAX()在与主表连接的子查询中进行汇总。
9 X' A5 Z+ A+ y( h% k+ NSELECT5 w' t* A9 L- g! d3 Y' w/ |* k& d
  tbl.id,- \% X0 t% x' B- c( w5 B
  tbl.val,
7 W5 s3 ?% e+ n6 i9 W. j  tbl.updated
. W6 q' H8 G) F7 EFROM tbl JOIN (
5 D* P& ^& M5 m9 ~! r, z6 ~) N' l  /* Subquery gets MAX(updated) per id  to JOIN against */, Z) E' G  l. n" s7 m
  SELECT 1 w! U! ?% y3 Z% ^+ m
    id,
8 W2 m1 L' n8 p% h8 f+ e$ Z    MAX(updated) as updated
5 h- Y: l, ]& [9 I; T% ]  FROM tbl7 |0 K: P5 X! {. Z
  GROUP BY id6 [& P, f9 @! Y% I& Z& I
) t2 ON tbl.id = t2.id AND tbl.updated = t2.updated
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则