国の州(state_table)と都市(city_table)を含む2つのテーブルがあります
シティテーブルには、state_tableと関連付けるためのstate_idがあります
両方のテーブルにはすでにデータが含まれています。
今問題
Cityテーブルには、1つの州内の都市の複数のエントリが含まれています。また、別の都市も同じ都市名を持っている場合と持っていない場合があります
例:cityoneは、stateoneでcityテーブルに5回出現し、statetwoで2回出現します。
では、州ごとに1つの都市を保持し、残りを削除するクエリを作成するにはどうすればよいでしょうか。
スキーマは次のとおりです
CREATE TABLE IF NOT EXISTS `city_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state_id` int(11) NOT NULL,
`city` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `state_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state` varchar(15) NOT NULL,
`country_id` smallint(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
これはサンプルデータです
id state_id city
1 1 city_one
2 1 city_two
3 1 city_one
4 1 city_two
5 2 city_one
6 3 city_three
7 3 city_one
8 3 city_three
9 4 city_four
10 4 city_five
元のテーブルには152,451行あります