- ベストアンサー
1テーブル内レコードの各フィールド値の差分チェック
- 1テーブル内のレコードの各フィールドの値を比較し、異なる値を表示するためのSQL文の作り方を教えてください。
- ログテーブル内の2つのレコードを比較して、どのフィールドの値が変更されたかを確認するために、SQL文を実行したいです。
- 1つ以上のフィールドの値が変更された場合に、その変更前と変更後のレコードを表示するためのSQL文を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
チェック用なら、以下のSQLでもいいんではないでしょうか。 select concat( case when a.c1=b.c1 then '' else concat(' c1:',b.c1) end ,case when a.c2=b.c2 then '' else concat(' c2:',b.c2) end ,case when a.c3=b.c3 then '' else concat(' c3:',b.c3) end ) compare from a,b where キー条件~
その他の回答 (2)
----------------------------------------------------- | フィールド1 | フィールド2 | フィールド3 | フィールド4 |フラグ ----------------------------------------------------- レコード1 | 1 | 11 | 111 | 1111 | 0 レコード2 | 1 | 22 | 111 | 2222 | 2 というデータのときに [フィールド2]、[フィールド4] という列名のリストが欲しい、ということでしょうか。 SELECT 文では無理でしょう。phpMyAdmin で結果を知りたいのであれば、ストアドプロシージャを組むしかないですね。
お礼
いろいろと教えていただきまして、 ありがとうございました。
補足
お世話になっております。 アウトプットのイメージと致しましては、 今回ご回答いただきました内容が、 私のイメージと同じでした。 もしよろしかったら、 ストアドプロシージャで組むカンタンな例など 教えていただけましたら助かります。 以上、宜しくお願い致します。
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 結果セットとしては、どのように表示したいのでしょうか? ・両方のレコードを出し、差分がないカラムはNULL ・更新後のレコードのみ出力し、差分がないカラムはNULL など・・・。 アウトプットがイメージできないので、SQLが書けないです。
お礼
お世話になりました。 ありがとうございました。
補足
お世話になっております。 アウトプットと致しましては、 上記「No2」でご回答をshitaba様よりいただきました 内容と同じことを、私の方ではイメージ致しております。 以上、宜しくお願い致します。
お礼
お世話になっております。 concatやcase whenやcompareというものがSQL文で利用できる物として、 存在していることすら不勉強で存じ上げませんでした。 来週早々に、開発環境にてさっそく試してみます。 ご回答ありがとうございました。