我有这个Mysql查询:

INSERT IGNORE INTO table1 (device_id, august) VALUES ((SELECT id from table2 where hostname='hostname'), 1)ON DUPLICATE KEY UPDATE august = august + 1;


对于某些主机名,(SELECT id from table2 where hostname='hostname')的结果为NULL,在这种情况下,我不希望在表中插入任何内容,这就是为什么我将device_id列设置为主键的原因。

如果我使用IGNORE,则会发出警告,但对于device_id = 0(该列的默认值)的列,值august仍然会增加,而我不希望这样。

如果删除IGNORE,则会引发错误,并且没有插入任何内容。问题是我不想产生错误(并且我不想使用try / catch)。

MySQL中有没有办法可以做到这一点?

谢谢

最佳答案

我认为在同一查询中同时具有IGNORE和ON DUPLICATE KEY UPDATE并没有多大意义。

我认为这是您想要的:

INSERT INTO table1 (device_id, august) (
    SELECT id, 1 from table2 where hostname='hostname'
) ON DUPLICATE KEY UPDATE august = august + 1;

10-08 15:00