• 締切済み

MySQLで更新の結果を知るには

こんばんは 業務で以下の切り分けをしたいのですが、可能でしょうか。 SOAP通信を使っていて、パフォーマンス的な観点から、select文は使用したくないと思っています。 ■環境 ・PHP5 ・MySQL ・FreeBSD6 ■やりたいこと Update文で更新を行ったときに、データそのものがなくて更新できなかったのか、データは存在するがPK以外の条件がマッチしなくて更新できなかったのかで、エラーコードを分けたい 例えば、  update tableA set column1='aaa' where pk1=1 and pk2=2 and column2='bbb'; といったSQL文で、「pk1=1 and pk2=2」に合致するデータがないのか、データは存在するが「column2='bbb'」には合致しなくて更新されないのかの切り分けをしたいのです。 かなり、困ってしまっています。 SQL文でできない場合でも、何かしらの解決方法がありましたら、よろしくお願いいたします!!!

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • newta777
  • ベストアンサー率58% (20/34)
回答No.1

select count ... のselect文で調べるといいのでは?

kokubunta
質問者

お礼

参考になりました ありがとうございました

関連するQ&A

  • WHERE句の条件を区別する

    こんばんは 業務で以下の切り分けをしたいのですが、可能でしょうか。 SOAP通信を使っていて、パフォーマンス的な観点から、select文は使用したくないと思っています。 ■環境 ・PHP5 ・MySQL ・FreeBSD6 ■やりたいこと Update文で更新を行ったときに、データそのものがなくて更新できなかったのか、データは存在するがPK以外の条件がマッチしなくて更新できなかったのかで、エラーコードを分けたい 例えば、  update tableA set column1='aaa' where pk1=1 and pk2=2 and column2='bbb'; といったSQL文で、「pk1=1 and pk2=2」に合致するデータがないのか、データは存在するが「column2='bbb'」には合致しなくて更新されないのかの切り分けをしたいのです。 かなり、困ってしまっています。 SQL文でできない場合でも、何かしらの解決方法がありましたら、よろしくお願いいたします!!!

  • update実行時の、追加情報の取得について

    こんばんは。 業務で、以下の情報を知りたいと思います。 5000件のupdate文をマルチクエリ実行した際に、 1.すべての条件が合致して、更新された(成功) 2.PKは合致するが、他の条件は合致しなかった(エラーとしてエラーコードとリクエスト情報を返します) 3.PKが合致するデータ自体が存在しなかった(対象のリクエストデータのみ、インサートの処理が実行されます) 以上を実現するために、以下のようなSQL文を作成して実行しようとしています update tableA set column1=('aaa','bbb',column1) where pk='xx'; 1.pk='xx'かつcolumn1='aaa'が満たされた場合、affected_rowsは1になります。 3.データ自体が存在しないので、affected_rowsは0です 2.については、matchedは1だが、changedは0という結果から判別したいのですが、関数としては、mysqli_infoを使用するしかないでしょうか。文字列が返却されてくるので、必要な情報(matchedとchangedのカウント)のみを取得できる方法を探しています 環境は、以下です PHP5 MySQL(MySQLi接続) FreeBSD 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • mysql 空いているカラム

    恐れ入ります。mysqlで右端のカラムにデータを次々とupdateしたいのですが sql文はどのようにすれば良いでしょうか。 右端のデータの無いカラムのを探してupdateするイメージです。 よろしくお願いします。

  • Selectした時のレコードの取得順

    SQL Server2005 で開発しています。 Order by で並び替えてレコードをSelectする際に、 Order by の対象列データが同じ場合は、 どういった順番でレコードが取得できるのでしょうか? TableA No | Data1 | Data2   1| AAA | 100   2| AAA | 200   3| AAA | 300   4| ABC | 400   5| BBB | 500 (Noはクラスタ化PK) 例えば、上のようなテーブルから次のSQLを実行すると  (1)Select * From TableA ;  (2)Select * From TableA Order by Data1 Asc;  (3)Select * From TableA Order by Data1 Asc, No Asc;  (1)(2)(3)全て、次の順で返ってきました。   1| AAA | 100   2| AAA | 200   3| AAA | 300   4| ABC | 400   5| BBB | 500  しかし、(2)のSQLは、データによって  次の順で返ってくることがありました。   3| AAA | 300   1| AAA | 100   2| AAA | 200   4| ABC | 400   5| BBB | 500    1~3レコード目までは全てData1がAAAのレコードですが  特に指定していなくても、No(PK)の順になるのかと思っていました。    なお、レコードができた(Insert順)でもなさそうです。  この、順番は何で決まっているのでしょうか?  

  • updateで複数行更新したい

    OracleのSQLについて質問があります。 UPDATE文を1度しか使わずに、抽出条件の異なるデータを複数個更新することは可能ですが? 例えば、 テーブル名:TEST カラム: A B C D UPDATE A B C D 100 010 350 300 → 100 010 200 250 100 020 350 000 → 100 020 200 280 という感じで更新したいのですが、どんなUPDATE文を組み立てればいいのか思いつきません。 なので、何かきっかけになるようなことでも構いませんので、教えてください。 よろしくお願いします。

  • データの更新方法について

    データを更新するときSQLで DeleteしてInsertする更新方法と Updateを行う更新方法とがあると思うのですが この使い分け、切り分けはどういう視点になるのでしょうか 私はDeleteしてInsertする方が簡単なので Delete + Insertをよく使っています。

  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2,  200 4,  10 7,  460 11,  35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

  • MySQL側で計算してもらってレコードを更新できるか??

    質問があるのですがよろしくお願いします。 例えば、「point」というカラムのレコードの数値を+1して更新したい時に、 update文の中に「id~番のレコードの、「point」のカラムの数値を+1する」みたいな命令を書いて、 MySQL側で計算してもらってレコードを更新することは出来るのでしょうか? それとも、やはり一度select文で数値を取り出して、 perlやPHP等のミドルウェア側で数値を+1してからupdate文で更新するしかないのでしょうか? どなたか分かる方いらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • MySQL
  • あいまい条件抽出についてのSQL文について

    あいまい条件抽出についてのSQL文について hiroです。 SQL文について、教えてほしいのですが、 下記のようなDatabaseがあったとします。 tableA:カラムA:ABCDE,BCDEA tableB:カラムB:??C?? この場合、例えば、 SELECT * FROM DataBase WHERE tableA.カラムA like tableB.カラムB みたいな感じで、カラムAのABCDEだけを検索するような仕組みを作ることは 可能でしょうか? ※上のSQL文では引っ張れないのは理解できています。 わかる方がいらっしゃいましたら、SQL文を教えてください。 よろしくお願いします。 環境:Oracle 11g

  • PL/SQL 複数件同じ値で更新する方法

    functionを作成しています。 AAA  BBB     BBB  ==== ==== → ====  001  100      200 001  101       200 002  102      201 003  103      202 update TABLE_NAME set BBB = function (BBB); のように呼び出されています。 現在はfunctionで連番がふられているため、BBBのカラムは 全て違う値に更新されてしまうのですが、 AAAで同じ値のものには同じ値を返しBBBのカラムを更新したいのですが どのように作成したらいいのか教えてください。お願いします。

専門家に質問してみよう