2016-07-27 10 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

私が見る限り、これには1つのPKしかありませんか? –

+0

あなたはそれを自分自身に与えて、あなたが立ち往生している場所を教えてくれませんか? – halfer

答えて

1

次のクエリは私の仕事でした。それはPKであるため、更新からAccIDを削除しなければならず、更新するべきではありません。

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) 
関連する問題