とあるデータのクレンジング、名寄せ作業をSQLだけで完結する上で、よくわからなくなってしまったので、メモします。
例えば、こんな定義とデータがあったとして。
定義
CREATE TABLE `artist_master` (
`Id` bigint(20) unsigned NOT NULL,
`CreatedAt` datetime DEFAULT CURRENT_TIMESTAMP,
`Valid` tinyint(4) NOT NULL DEFAULT '1',
`Name` varchar(128) NOT NULL,
`VideoCount` bigint(20) unsigned NOT NULL DEFAULT '0',
`Ext` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
;
データ
mysql> SELECT * FROM artist_master ;
+
| Id | CreatedAt | Valid | Name | VideoCount | Ext |
+
| 38095832004676 | 2018-10-26 06:50:23 | 1 | Chris Alan Lee | 0 | NULL |
| 333655795382791 | 2018-10-26 06:50:21 | 1 | Chris Alan Lee | 0 | NULL |
| 354380886937504 | 2018-10-26 06:50:25 | 1 | Chris Alan Lee | 0 | NULL |
| 391755868626561 | 2018-10-26 06:50:24 | 1 | Chris Alan Lee | 0 | NULL |
| 504480813693733 | 2018-10-26 06:50:22 | 1 | Chris Alan Lee | 0 | NULL |
| 577030850315619 | 2018-10-26 06:50:24 | 1 | Chris Alan Lee | 0 | https://www.imdb.com/name/nm1327414/ |
| 629430777071848 | 2018-10-26 06:50:20 | 1 | Chris Alan Lee | 0 | NULL |
| 643255722139392 | 2018-10-26 06:50:20 | 1 | Chris Alan Lee | 0 | NULL |
+
やりたいこと
上記のデータを踏まえ、
577030850315619のValid値を1のまま保守して、その他のValid値を0にしたい場合、どうすればいいんだっけ?というものを考えてまして・・・いわゆる、データークレンジングとか名寄せの話になるのですが(汗)それをSQLのみで実現するにはどうしたらいいってお話です
続きを読む