INSERT IGNORE 即使有警告仍然插入

INSERT IGNORE still inserting even with warning

我有这个 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,在这种情况下,我不想在 table 中插入任何内容,这就是为什么我设置 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;