私はこれを1つのSQL文で行うことはできないと思います。そして、あなたが他のテーブルからあなたがきれいにしようとしているものへの外部キーの関係を持っているならば、あなたは確かにを実行しません。はこれを1ステップでやりたいと思います。
CREATE TABLE state_mappings (
`old` VARCHAR(64) NOT NULL,
`new` VARCHAR(64) NOT NULL
);
INSERT INTO state_mappings VALUES ('California', 'CA'), ...;
INSERT IGNORE INTO MyTable (state, source)
SELECT sm.new, s.source from states s JOIN state_mappings sm
ON s.state = sm.old;
// Update tables with foreign keys here
DELETE FROm MyTable WHERE state IN (SELECT distinct old FROM state_mappings);
DROP TABLE state_mappings;
私はSQLプロですから、これらのステートメントはおそらく最適化できますが、あなたは要点を得るでしょう。
あなたはに SELECT COUNT(ソース)、 'CA'、 'CA' で状態( 'カリフォルニア'、 'CA')のグループtblnameからソース、ソースは、カウント(ソース)を有する> 1 を行うことができます潜在的な紛争はどれくらいあるか考えてみてください。多くの人がいなければ手でこれを扱う方が簡単かもしれません。 – Brian