とあるデータのクレンジング、名寄せ作業を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のみで実現するにはどうしたらいいってお話です
続きを読む