2011-12-30 18 views
0

に更新された列と行を見つけ選択:は、私はこのようなテーブルを持っているSQL

+---------+---------+---------------+ 
| 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で次のレコードが発生するまで、最後に更新された列を見つける方法はありますか。

私のターゲットDBMSは、Mysql、SQlite & MS Accessです。

おかげ

ファンキーなクエリの
+0

データベースの設定がわかりません。 Col1/Col2の数字は何ですか? – Aufziehvogel

+0

あなたは 'timestamp1'と' timestamp2'のように聞こえます。 – Ben

+0

@Aufziehvogel:これは、さまざまなソースから取得した同じ要因の2つのパラメータであり、最近変更が必要なものが1つあります。 – RYN

答えて

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) 

はそれが少しきれいに見えます。

関連する問題