• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:1テーブル内レコードの各フィールド値の差分チェック)

1テーブル内レコードの各フィールド値の差分チェック

このQ&Aのポイント
  • 1テーブル内のレコードの各フィールドの値を比較し、異なる値を表示するためのSQL文の作り方を教えてください。
  • ログテーブル内の2つのレコードを比較して、どのフィールドの値が変更されたかを確認するために、SQL文を実行したいです。
  • 1つ以上のフィールドの値が変更された場合に、その変更前と変更後のレコードを表示するためのSQL文を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • moousi
  • ベストアンサー率70% (21/30)
回答No.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 キー条件~

hiroasa21
質問者

お礼

お世話になっております。 concatやcase whenやcompareというものがSQL文で利用できる物として、 存在していることすら不勉強で存じ上げませんでした。 来週早々に、開発環境にてさっそく試してみます。 ご回答ありがとうございました。

その他の回答 (2)

noname#212058
noname#212058
回答No.2

-----------------------------------------------------       | フィールド1 | フィールド2 | フィールド3 | フィールド4 |フラグ ----------------------------------------------------- レコード1 | 1       | 11      | 111     | 1111    | 0 レコード2 | 1       | 22      | 111     | 2222    | 2 というデータのときに [フィールド2]、[フィールド4] という列名のリストが欲しい、ということでしょうか。 SELECT 文では無理でしょう。phpMyAdmin で結果を知りたいのであれば、ストアドプロシージャを組むしかないですね。

hiroasa21
質問者

お礼

いろいろと教えていただきまして、 ありがとうございました。

hiroasa21
質問者

補足

お世話になっております。 アウトプットのイメージと致しましては、 今回ご回答いただきました内容が、 私のイメージと同じでした。 もしよろしかったら、 ストアドプロシージャで組むカンタンな例など 教えていただけましたら助かります。 以上、宜しくお願い致します。

回答No.1

こんばんは。 結果セットとしては、どのように表示したいのでしょうか? ・両方のレコードを出し、差分がないカラムはNULL ・更新後のレコードのみ出力し、差分がないカラムはNULL など・・・。 アウトプットがイメージできないので、SQLが書けないです。

hiroasa21
質問者

お礼

お世話になりました。 ありがとうございました。

hiroasa21
質問者

補足

お世話になっております。 アウトプットと致しましては、 上記「No2」でご回答をshitaba様よりいただきました 内容と同じことを、私の方ではイメージ致しております。 以上、宜しくお願い致します。

関連するQ&A