我通過API獲取業務價值並將其插入到數據庫中。更新MYSQL數據庫
SNO ID category
1 aaa Machine learning
2 aaa AI
3 bbb mobile
其中SNO是設置爲自動增量的主鍵。 現在2天后,爲了讓我的數據庫保持最新狀態,我需要從API獲取新數據。 因此,假設我知道ID'aaa'現在又有一個類別爲「數據結構」
問題: 如何更新我的表以反映這個新類別? 我期待像
SNO ID category
1 aaa Machine learning
2 aaa AI
3 bbb mobile
4 aaa data structures
我不知道SNO,因爲它們是自動遞增。 刪除ID =「aaa」的所有行然後再次插入是一種選擇,但我試圖避免這種情況,因爲它可能會增加開銷。
我從API獲得新的價值,
所以我得到機器學習,人工智能和數據結構(全部3) 如果我使用,所以在我的代碼時,我遍歷類變量3 SQL將生成
INSERT INTO tablename (ID, category) VALUES ('aaa', ‘Machine learning’);
INSERT INTO tablename (ID, category) VALUES ('aaa', ‘AI’);
INSERT INTO tablename (ID, category) VALUES ('aaa', 'data structures');
因此,在這種情況下,第一和第二插入語句將被複制,我的表將有重複的行 。 。
基本上,我需要檢查ID和類別在BD存在,如果他們不然後插入?(主鍵SNO設置爲自動增量)
+ Options
Field Type Null Key Default Extra
uuid varchar(50) NO NULL
categoryName varchar(50) NO NULL
sno int(5) NO PRI NULL
似乎MySQL支持合併,非標準語法;檢查http://mechanics.flite.com/blog/2013/09/30/how-to-do-an-upsert-in-mysql/ – okaram 2014-10-30 04:38:07
爲什麼不使用簡單的'INSERT'語句? – 2014-10-30 04:44:18