我想解決一個問題,我繼承了對不同數據源的不良處理。我有一個包含善惡用戶的用戶表。INSERT..ON DUPLICATE KEY UPDATE - 但不使用重複密鑰來比較
create table `users`(
`user_id` int(13) NOT NULL AUTO_INCREMENT ,
`email` varchar(255) ,
`name` varchar(255) ,
PRIMARY KEY (`user_id`)
);
在此表中,主鍵當前設置爲user_id。
我有另一個表('users_evil'),其中只包含惡意用戶(該表中的所有用戶都包含在第一個表中) - 此表上的user_id與第一個表中的user_id不一致。
我想讓我的所有用戶都在一張桌子上,並簡單地標記哪些是好的,哪些是壞的。
我想要做的是改變用戶表並添加一個默認爲0的列('evil')然後我想從我的'users_evil'表中轉儲數據,然後運行INSERT..ON將這些數據複製密鑰更新放入第一個表(設置'evil'= 1,其中電子郵件匹配)
問題在於'PK'設置爲user_id而不是'email'。 任何建議,或甚至成功實現這一目標的另一種策略。
我可以運行這個語句,但是在語句持續時間內將另一列作爲PK來處理。
我不知道你可以在更新期間加入 - 這正是我發佈到SO的原因。感謝這個答案。 – calumbrodie 2010-06-07 16:10:37
當你只運行一次這樣簡單的查詢時,我沒有看到有臨時索引的一點。 – 2010-06-07 16:13:06
確實。你的方法更有意義。標記爲正確,感謝您的幫助 – calumbrodie 2010-06-07 16:16:16