我有一张这样的表:
+---------+---------+---------------+
| Col1 | Col2 | timestamp |
+---------+---------+---------------+
| 6050000 | 6030000 | 1325241121990 |
+---------+---------+---------------+
| 6050000 | 6040000 | 1325241611269 |
+---------+---------+---------------+
| 6050000 | 6050000 | 1325248254109 |
+---------+---------+---------------+
| 6060000 | 6050000 | 1325248455780 |
+---------+---------+---------------+
| 6060000 | 6050000 | 1325354237099 |
+---------+---------+---------------+
我需要在每一行中找出最近与先前行相关的Col1
或Col2
最新更新的内容。
例如,在上表中:
Col2
是最新的更新Col1
是最新更新。 问题:如何找到上次更新列的行,直到SQL中出现下一条记录为止?
我的目标DBMS是Mysql,SQlite& MS Access。
由于
答案 0 :(得分:1)
有点质朴的查询,但这就是它的样子:
select
case when t1.col1 = t2.col1 then 'Col1 is the same' else 'Col1 is updated' end as Col1Status,
case when t1.col2 = t2.col2 then 'Col2 is the same' else 'Col2 is updated' end as Col2Status
from
table t1
inner join table t2 on
t2.timestamp = (select max(timestamp) from table t3 where t1.timestamp > t3.timestamp)
如果您的桌子上碰巧有一个唯一的标识符,它看起来会更漂亮。