mysqlは同時に2つのテーブルの構想を修正します

3155 ワード

1.需要:コメントシートのニックネームを携帯電話番号の最後の4桁に変更します.
UPDATE trans_eval SET issuer_name = MID(issuer_name,4,6) WHERE CHAR_LENGTH(issuer_name) = 11 AND issuer_name LIKE '1%';

2.誤動作(MID(issuer_name,4,6)は中間の6ビット)のため、データロールバックが必要となる.
3.中間表の作成(AND 1<>1条件が空表の作成に適合しない)
CREATE TABLE tmp 

SELECT T2.REG_NO,T2.MOBILE,t1.`issuer_name`  FROM trans_eval  t1,member t2 WHERE t1.issuer_no =t2.`reg_no`  

 AND  MID(t2.`mobile`,4,6) =t1.`issuer_name`  AND 1<>1 GROUP BY T2.REG_NO,T2.MOBILE,t1.`issuer_name` ;

4.中間テーブルへのデータのインポート
INSERT INTO tmp 

SELECT T2.REG_NO,T2.MOBILE,t1.`issuer_name`  FROM trans_eval  t1,member t2 WHERE t1.issuer_no =t2.`reg_no`  

 AND  MID(t2.`mobile`,4,6) =t1.`issuer_name`  GROUP BY T2.REG_NO,T2.MOBILE,t1.`issuer_name` ;

5.データ復旧
SELECT * FROM tmp;

UPDATE tmp t1,trans_eval t2 SET t2.`issuer_name`=t1.`MOBILE` WHERE t1.`REG_NO`=t2.`issuer_no`;