2016-07-27 63 views
-1

有人可以幫我寫一個查詢嗎?我將每天使用一個python腳本源文件將數據插入MySQL數據庫,該文件將包含迄今爲止的記錄。但是,我只想插入那些新的並且尚未插入的記錄。但是,如果非主鍵列已更新這些記錄,那麼我想更新現有的記錄。要求: 1.插入新記錄。 2.如果記錄存在(對於PK),則不要添加記錄。 3.如果記錄存在(對於PK)但非主鍵已更改,則更新現有記錄(對於PK)。插入,如果不存在,則更新記錄

CREATE TABLE `S_account` (
    `Sub` varchar(45) DEFAULT NULL, 
    `AccName` varchar(45) DEFAULT NULL, 
    `AccTeam` varchar(45) DEFAULT NULL, 
    `Terr` varchar(45) DEFAULT NULL, 
    `AccOwner` varchar(45) DEFAULT NULL, 
    `Level1` varchar(45) DEFAULT NULL, 
    `GAccount` varchar(45) DEFAULT NULL, 
    `Customer` varchar(45) DEFAULT NULL, 
    `City` varchar(45) DEFAULT NULL, 
    `State` varchar(45) DEFAULT NULL, 
    `EndCus` varchar(45) DEFAULT NULL, 
    `AccID` varchar(45) NOT NULL, 
    PRIMARY KEY (`AccID`) USING BTREE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

據我所知,這隻有一個PK? –

+0

你可以自己動手,告訴我們你卡在哪裏嗎? – halfer

回答

1

以下查詢爲我完成了這項工作。我必須從更新中刪除AccID,因爲這是PK,不應該更新。

INSERT INTO S_account(
    Sub, AccName, AccTeam, Terr, AccOwner, Level1, GAccount, Customer, 
    City, State, EndCusName, AccID 
) VALUES (
    "test", "test", "test", "test", "test", "No", "Yes", 
    "test", "test", "test", "asdasdas" 
) 
ON DUPLICATE KEY UPDATE 
    Sub = VALUES(Sub), AccName = VALUES(AccName), AccTeam = VALUES(AccTeam), 
    Terr = VALUES(Terr), AccOwner = VALUES(AccOwner), 
    Level1 = VALUES(Level1), GAccount = VALUES(GAccount), 
    Customer = VALUES(Customer), City = VALUES(City), 
    State = VALUES(State), EndCusName = VALUES(EndCusName) 
相關問題