我想插入没有重复的新行。
完整的想法是仅在不存在缩进的对时才插入新行,不仅仅是一个键,这意味着两个列必须一起存在才能将其称为重复。
parent_id | report_date
1 | 2015-12-15
1 | 2015-10-10
(1 | 2015-10-10) NOT ALLOWED
2 | 2011-05-04
答案 0 :(得分:1)
方法1:添加唯一索引
ALTER TABLE `tablename` ADD UNIQUE `unique_index`(`parent_id`, `report_date`);
现在,如果您尝试更新,查询执行将失败。
方法2:插入时检查
最佳解决方案是在评论中添加@pyNoob建议的唯一索引。但是如果你不能这样做,可能因为索引而担心磁盘空间?,那么下面的查询就可以了: -
INSERT INTO tablename (parent_id, report_date)
SELECT * FROM (SELECT '1', '2015-10-10') AS tmp
WHERE NOT EXISTS (
SELECT parent_id, report_date FROM tablename where parent_id = '1' and report_date = '2015-10-10'
) LIMIT 1;