[前][次][番号順一覧][スレッド一覧]

mysql:10180

From: "Takashi Yamashita" <"Takashi Yamashita" <takasi@xxxxxxxxxx>>
Date: Thu, 16 Sep 2004 19:21:38 +0900
Subject: [mysql 10180] Re: replace()関数の処理

お世話になっております。

ご回答ありがとうございます。>片寄様

> tbl_repのレコード数分のreplace()処理を
>   tbl_aの全てのレコードに逐次適用する
> ことになりますよね。
そうです。

> どうしても、2重にループ処理が必要なのではないでしょうか。
> MySQLの機能だけ(力仕事)では
>  UPDATE....replace(....)...
> をレコード数分実行することになりそうです。
tbl_repのレコード数は530件です。
一レコードずつ処理するクエリですと、
レコード数分の530回実行しないと置換が完了しない事になります。
それですと効率が悪いですので、
何とか一発で仕留められそうなクエリを作ってみました。
=========================================================
replace tbl_a
select
  tbl_a.id,
  replace (tbl_a.field_n, tbl_rep.field_from, tbl_rep.field_to) as field_n
from tbl_a, tbl_rep
where tbl_a.field_n like concat('%', tbl_rep.field_from, '%')
order by tbl_rep.field_from;
=========================================================
# tbl_aのレコード数は38,296件です。
# tbl_a.idはプライマリキーです。

しかし、実行してみたら一回で置換が完了しませんでした。
実行結果は以下の通りです。
# 補足ですが、tbl_aのレコード数は38,296件です。

1回目:
Query OK, 509798 rows affected (1 min 4.61 sec)
Records: 254899  Duplicates: 254899  Warnings: 0
2回目:
Query OK, 398056 rows affected (54.22 sec)
Records: 199028  Duplicates: 199028  Warnings: 0
:
:
(途中省略)
:
:
14回目:
Query OK, 2 rows affected (30.61 sec)
Records: 1  Duplicates: 1  Warnings: 0
15回目:
Query OK, 0 rows affected (30.85 sec)
Records: 0  Duplicates: 0  Warnings: 0

何故上記クエリがtbl_repの全レコードを舐めてくれないのか、
何故クエリを複数回実行しないと置換が完了しないのか、
原因が分かりません。
どなたか教えて下さい。

宜しくお願いします。

-------------------------------------------------------------
山下高司
takasi@xxxxxxxxxx




[前][次][番号順一覧][スレッド一覧]

     10172 2004-09-16 10:19 ["Takashi Yamashita" ] replace()関数の処理                     
     10173 2004-09-16 11:07 ┗["片寄白王" <katayose]                                       
     10174 2004-09-16 11:31  ┗["Takashi Yamashita" ]                                     
     10179 2004-09-16 18:06   ┣["片寄白王" <katayose]                                   
->   10180 2004-09-16 19:21   ┗["Takashi Yamashita" ]                                   
     10181 2004-09-16 20:28    ┗[UNO Shintaro <uno@xx]                                 
     10184 2004-09-16 21:53     ┗["Takashi Yamashita" ]                               
     10192 2004-09-17 12:18      ┗[UNO Shintaro <uno@xx]                             
     10193 2004-09-17 13:31       ┗["Takashi Yamashita" ]