新しく作成された列の値に別の列の値のサブストリングを入力して、テーブル全体を実行したいと思います。
次のようなテーブル構造が与えられます。
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(150) | YES | | NULL | |
| domain | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
次のようなデータが含まれています。
+----+-------------------------+--------+
| id | email | domain |
+----+-------------------------+--------+
| 1 | bob@domain1.com | NULL |
| 2 | jim@domain1.com | NULL |
| 3 | terry@domain1.com | NULL |
| 4 | frank@anotherdomain.com | NULL |
| 5 | linda@anotherdomain.com | NULL |
| 6 | craig@thethird.com | NULL |
+----+-------------------------+--------+
メールアドレスのドメイン部分を解析し、それをドメイン列に配置して、次のような結果になるクエリが必要です。
+----+-------------------------+-------------------+
| id | email | domain |
+----+-------------------------+-------------------+
| 1 | bob@domain1.com | domain1.com |
| 2 | jim@domain1.com | domain1.com |
| 3 | terry@domain1.com | domain1.com |
| 4 | frank@anotherdomain.com | anotherdomain.com |
| 5 | linda@anotherdomain.com | anotherdomain.com |
| 6 | craig@thethird.com | thethird.com |
+----+-------------------------+-------------------+
現在、シェルスクリプトを使用してMySQLエンジンの外部でこれを行っていますが、これは非効率的であり、MySQLエンジンの内部でこれを行うためのより良い方法があるはずです。
ここでは効率が重要です。これは、本番環境でこれを実行するテーブルが数万行、場合によっては数十万行であるためです。