Выбор поиска обновленного столбца и строки в SQL - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть такая таблица:

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

Мне нужно выяснить в каждой строке, какой из Col1 или Col2 был обновлен самым последним по сравнению с предыдущими строками.

Например, в приведенной выше таблице:

  • строк # 2, # 3 Col2 было самым последним обновлением
  • строки # 4, # 5 Col1 было самым последним обновлением.

Вопрос: Как я могу найти строку, которая в последний раз обновляла столбец до следующей записи в SQL?

Моя целевая СУБД - Mysql, SQlite и MS Access.

Спасибо

1 Ответ

1 голос
/ 30 декабря 2011

Напуганный запрос, но он выглядит так:

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)

Это выглядит немного красивее, если у вас в таблице есть уникальный идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...