我有这个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;