以下のようなテーブルでレコードをitem_noを指定して、
最新のもののレコードと最新の1つ前のレコードを比較して異なっている部分を抽出したいです。
item_no | koumoku1 | koumoku2 | koumoku3 | created | modified |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 2019-06-01 | 2019-06-01 |
1 | 1 | 1 | 2 | 2019-06-01 | 2019-06-15 |
1 | 1 | 3 | 2 | 2019-06-01 | 2019-07-01 |
2 | 2 | 2 | 2 | 2019-06-02 | 2019-06-10 |
2 | 3 | 4 | 2 | 2019-06-02 | 2019-06-13 |
項目の変更履歴を管理しているようなテーブルでして
item_noにはアイテムの番号が、
koumoku1、koumoku2、koumoku3にはそれぞれの項目、
createdは作成日時、modifiedは更新日時を持っているようなイメージです。
同じitem_noのものは作成日時が同じです。
なので更新日時の値で新しい順などを判別します。
そして、以下のような抽出を行いたいです。
item_no | 異なっている列名 | 最新から1つ前の値 | 最新の値 |
---|---|---|---|
1 | koumoku2 | 1 | 3 |
複数違う場合は複数箇所、
それぞれ異なっている列名と1つ前の値、最新の値のセットを取り出したいです。
item_noが2の場合は
item_no | 異なっている列名1 | 最新から1つ前の値1 | 最新の値1 | 異なっている列名2 | 最新から1つ前の値2 | 最新の値2 |
---|---|---|---|---|---|---|
2 | koumoku1 | 2 | 3 | koumoku2 | 2 | 4 |
データベースはMariaDBのバージョン10.1.37を使用しています。
上記のように異なっている列名、以前の値、最新の値を抜き出すことは可能なのでしょうか。
もし、SQLだけで抽出できないなら、
レコードの最新と1つ前のの抽出結果をプログラムで順次項目の比較をして差を見つけようと考えています。
どうかよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー