2010-11-20 59 views
0

我的一個最後的問題來到了這個話題,我沒有得到一個確切的迴應:更新100KS關鍵

我從一個表中選擇數據,在運行某些數據上的任務,然後將新數據插入到第二個表中。如果新數據與表2中的現有行匹配,那麼我想要進行更新。問題是,沒有關鍵檢查欺騙。如果新數據行與基於2個字段的現有行相匹配,則認爲它是需要更新的情況。

我已經看到了答案最接近的事是這樣的: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/

然而,林不知道這是否是我應該走的正確方向

+0

可能重複[MySQL的插入在重複鍵更新多個值(http://stackoverflow.com/questions/4230664/mysql-insert-on-重複鍵更新多值) – 2010-11-20 21:41:52

+2

「如果新數據行匹配基於2個字段的現有行」 - 爲什麼不把這兩個字段用作你的PK? – 2010-11-20 21:45:23

+0

它不一定是PK,2個字段上的唯一密鑰就足夠了。 – a1ex07 2010-11-20 21:47:21

回答

1

修改你的第二個表中添加唯一鍵是兩個列的組合,然後使用INSERT ...對重複密鑰更新

編輯:

只是要清楚,索引不限於單列。你可以創建一個索引是列的組合:中

ALTER TABLE table2 ADD UNIQUE INDEX(column1, column2); 
0

讓我們來看看 - 你有兩個表。並且您想創建第三個表格而沒有任何重複。這很容易 - 首先,複製一張表。其次,我們將從另一個表中選擇沒有與第一個重複的行。

 
INSERT INTO table3 (table3.col1, table3.col2) 
(SELECT table1.src, table1.col1, table1.col2 
FROM table1 WHERE table1.col1 NOT IN (SELECT col1 FROM table2)); 

col1是您檢查重複項的位置。該查詢將非常緩慢。