mysql:3845
From: MAO <MAO <mao@xxxxxxxxxx>>
Date: Wed, 27 Jun 2001 19:00:24 +0900
Subject: [mysql 03845] update した件数をカウントしたい。
にしかわともうします。 いつも質問ばかりで申し訳ないのですが、おしえてください。 現在、Linux上でMYSQL+DBI+Perlでプログラムを組んでいます。 たとえば、SQLシェルで、 mysql> update tbl_a set serial = 2 where uid = 1; とした場合 -- Query OK, 1 row affected (0.46 sec) Rows matched: 2 Changed: 1 Warnings: 0 -- といった結果が返ってくるとします。 上記の場合、マッチしたのが1件で変更したのが、1件とわかるのですが、 Perl上でその値を取得する場合はどのようにすればいいのでしょうか? 現状は、よい方法がわからない為、 #### マッチした件数 ##### $select_sql = q(select count(*) from tbl_a where uid = 1); $sth = $dbh->prepare("$select_sql") or die &error('SQL定義エラー'); $sth->execute() or die &error('SQL実行エラー'); @result = $sth->fetchrow_array(); $match_num = @result[0]; #### 変更した件数 ##### $select_sql = q(select count(*) from tbl_a where uid = 1 and serial !=2); $sth = $dbh->prepare("$select_sql") or die &error('SQL定義エラー'); $sth->execute() or die &error('SQL実行エラー'); @result = $sth->fetchrow_array(); $chenge_num = @result[0]; と、言った形で、先に、selectでマッチするものを探して、件数を割り出し、 その後アップデートをかけています。 スマートな方法があれば、おしえていただけないでしょうか。 よろしくおねがいいたします。
-> 3845 2001-06-27 19:00 [MAO <mao@xxxxxxxxxx>] update した件数をカウントしたい。 3846 2001-06-27 19:31 ┗[TSUTSUMI Thoru <tutu] 3848 2001-06-27 22:41 ┗[MAO <mao@xxxxxxxxxx>] 3852 2001-06-28 10:31 ┣[TSUTSUMI Thoru <tutu] 3856 2001-06-28 12:17 ┃┗["Kawai,Takanori" <GC] 3853 2001-06-28 11:02 ┗[Akihiko Shinohara <s] 3857 2001-06-28 12:31 ┗["Kawai,Takanori" <GC] 3860 2001-06-28 16:46 ┗[MAO <mao@xxxxxxxxxx>] 3861 2001-06-28 17:36 ┗[TSUTSUMI Thoru <tutu]