MySQLテーブルからダブレット(残念ながらトリプレットの場合もあります!)を削除しようとしています。私の問題は、利用可能な唯一の一意のデータが主キーであるため、ダブレットを識別するために、すべての列を考慮する必要があるということです。
ダブレットを持つすべてのレコードを識別し、それらをダブレット(主キーを含む)とともにテーブルにコピーすることができましたtemp
。ソーステーブルが呼び出されtranslation
、名前が。の整数の主キーがありますTranslationID
。ここから先に進むにはどうすればよいですか?ありがとう!
編集利用可能な列は次のとおりです。
TranslationID
LanguageID
Translation
Etymology
Type
Source
Comments
WordID
Latest
DateCreated
AuthorID
Gender
Phonetic
NamespaceID
Index
EnforcedOwner
重複の問題は、Latest
列が割り当てられた行にあります1
。
編集#2みなさん、ありがとうございました!WouterHの回答を使用して問題を解決したところ、次のクエリが表示されました。
DELETE from translation USING translation, translation as translationTemp
WHERE translation.Latest = 1
AND (NOT translation.TranslationID = translationTemp.TranslationID)
AND (translation.LanguageID = translationTemp.LanguageID)
AND (translation.Translation = translationTemp.Translation)
AND (translation.Etymology = translationTemp.Etymology)
AND (translation.Type = translationTemp.Type)
AND (translation.Source = translationTemp.Source)
AND (translation.Comments = translationTemp.Comments)
AND (translation.WordID = translationTemp.WordID)
AND (translation.Latest = translationTemp.Latest)
AND (translation.AuthorID = translationTemp.AuthorID)
AND (translation.NamespaceID = translationTemp.NamespaceID)