2015-06-08 88 views
0

我嘗試將5個數據集插入到我的數據庫中。 SQL是這樣的:SQL忽略最後的值

INSERT INTO imdb_crawl (id, title, link) VALUES 
('tt3008816', '009-1: The End of the Beginning', 80048948), 
('tt2353767', '1,000 Times Good Night', 80001898), 
('tt2391950', '1000 to 1: The Cory Weissman Story', 80010865), 
('tt2391950', '100 Below Zero', 70273426), 
('tt2290065', '100 Bloody Acres', 70276012) 
ON DUPLICATE KEY UPDATE id = id; 

我收到了響應「添加了4行」。數據庫是空的。即使有其他數據,第一個數據集也不會被保存;但我也沒有得到一個錯誤。哪裏有問題?謝謝!

+3

你插入id'tt2391950'兩次,所以我懷疑第二次實際上是更新現有的記錄(我從來沒有使用過MySQL,但我認爲這就是'ON DUPLICATE KEY ...'的作用)。 –

回答

2

你有第3和第4行使用相同的密鑰:

('tt2391950', '1000 to 1: The Cory Weissman Story', 80010865), 
('tt2391950', '100 Below Zero', 70273426), 

所以你只有4行所代替添加的5

在你的說法,你有陳述ON DUPLICATE KEY UPDATE id = id,但它確實在你的情況下什麼也沒有,因爲它將id的值更新爲相同的值。您需要將其更新到更有意義的事情,而不是,例如:

INSERT INTO imdb_crawl (id, title, link) VALUES 
('tt2391950', '1000 to 1: The Cory Weissman Story', 80010865), 
('tt2391950', '100 Below Zero', 70273426), 
ON DUPLICATE KEY UPDATE id = 'tt' + link; 

在這種情況下,您的第二行的idtt70273426