我将在重复键上执行插入以忽略。有一种特殊情况我不想更新日期时间字段,在这种情况下,它被称为 data_ultima_telefonata 。
以下是整个查询:
INSERT IGNORE INTO 'db'.'singolachiamatatesting' ('id_x', 'data_ultima_telefonata', 'operatore', 'status_descrizione','id_status', 'id_centro_lead', 'id_shop', 'data_apt', 'nome_pv','azienda') VALUES
('25647',
'2017-09-19 20:41:17',
'EU GUY',
'NR SMS Courtesy fissato',
'140',
'26',
'115',
'2017-09-21 15:00',
'SHOP','PRJXX'),
ON DUPLICATE KEY UPDATE 'id_status'=VALUES('id_status'), 'status_descrizione'=
VALUES('status_descrizione'),'data_ultima_telefonata'=CASE WHEN VALUES('id_status' IN ('100','200')
THEN VALUES('data_ultima_telefonata')
ELSE 'data_ultima_telefonata' END, 'data_apt'=VALUES('data_apt')
(请记住,整数字段的引号是直接从C#提供的:这不是错误!)
这种特殊情况,是当值由值给出的 id_status 字段时,它等于100或200(int数字字段)。否则,我会更新字段 data_ultima_telefonata 。
我尝试使用 case 子句条件:
CASE WHEN VALUES('id_status' IN (100, 200) THEN VALUES('data_ultima_telefonata') ELSE 'data_ultima_telefonata' END
但它给了我一般错误。