をutf8_unicode_ceするため、どのように私はutf8_unicode_ceするutf8_binから照合順序を変更できますか? 「重複エントリエラー」のため、通常の「alter」クエリは機能しません。例えば、2つのエントリのMySQL:utf8_binから変更照合順序が完全なテーブルを考えると
David Hussa
と
David Hußa
があります私は、彼らが同じである知っています。エントリを "マージ"するようにMySQLに指示するエレガントな方法はありますか?エントリのIDは他のテーブルで参照として使用されているので、これもMySQLが尊重しなければならないことに言及しておきます。または、私はこれを長くて迷惑なやり方でやらなければならないのですか?手動ですべての複製をマージして照合順序を変更することを意味しますか?
テーブルは次のようになります。
delimiter $$
CREATE TABLE `authors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_bin NOT NULL,
`count` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`),
FULLTEXT KEY `name_FULLTEXT` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=930710 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Stores all authors from dblp.xml.'$$
ありがとうございます。しかし、質問が残っています:名前のIDが別のテーブルで使用されていて、その名前が重複していた場合。これは "other" idによって自動的に更新されますか?私は、 "John Doe"がid = 1であり、 "JohnDoé"がid = 2であり、第2のIDが失われている、という意味ですか? – Aufwind
@Aufwind:申し訳ありませんが、最初は何を意味するのか分かりませんでした。いいえ、自動的に名前が更新されることはありません。あなたは今私が書くだろうクエリを実行する必要があります。 – Quassnoi
ありがとうございます。それは滑らかに働いた。私のような他の嫌なことについては、私はこれらのコメントを追加したい。子供は参照テーブルの名前であり、cはその略語であり、例えば、 c.authorは2行目の最後の行にあります。私は自分自身のためにそれを理解する時間を取った。 ^^ – Aufwind