选择在SQL中查找更新的列和行

时间:2011-12-30 16:59:47

标签: mysql sql sqlite ms-access

我有一张这样的表:

+---------+---------+---------------+
|   Col1  |   Col2  |   timestamp   |
+---------+---------+---------------+
| 6050000 | 6030000 | 1325241121990 |
+---------+---------+---------------+
| 6050000 | 6040000 | 1325241611269 |
+---------+---------+---------------+
| 6050000 | 6050000 | 1325248254109 |
+---------+---------+---------------+
| 6060000 | 6050000 | 1325248455780 |
+---------+---------+---------------+
| 6060000 | 6050000 | 1325354237099 |
+---------+---------+---------------+

我需要在每一行中找出最近与先前行相关的Col1Col2最新更新的内容。

例如,在上表中:

  • 第2行,第3行Col2是最新的更新
  • 第4行,第5行Col1是最新更新。

问题:如何找到上次更新列的行,直到SQL中出现下一条记录为止?

我的目标DBMS是Mysql,SQlite& MS Access。

由于

1 个答案:

答案 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)

如果您的桌子上碰巧有一个唯一的标识符,它看起来会更漂亮。