我有以下查询,可以在mysql和mariadb上使用:
INSERT into some_table (column1, column2, column3, column4, column5)
SELECT 'val1', 'val2', 'val3', 'val4', 'val5'
FROM `some_table`
WHERE NOT EXISTS (
SELECT `column1`, `column2` from `some_table`
WHERE `column1` = 'val1' and `column2` = 'val2'
) limit 1`
它根据val1和val2的唯一值检查行是否存在:如果行存在,则查询不执行任何操作。如果该行不存在,查询将插入一个值为val1、val2、val3、val4和val5的新行。
除非表是空的,否则查询是有效的,在这种情况下,不会插入任何值。
如何修改此查询以同时处理空表?
(注意:我无法在此表上创建唯一索引)
1条答案
按热度按时间holgip5t1#
不要从表本身中选择,而是从特殊表中选择
DUAL
.ALTER TABLE some_table ADD UNIQUE INDEX (column1, column2);
INSERT IGNORE into some_table (column1, column2, column3, column4, column5)
VALUES ('val1', 'val2', 'val3', 'val4', 'val5')