Mysql 检查是否已经存在多个记录,然后插入新记录

Mysql 检查是否已经存在多个记录,然后插入新记录,mysql,Mysql,如果我的问题不合适,很抱歉,但我需要一个项目的答案 实际上,我想将多条记录从MySql的table1插入到table2。但是在表2中插入记录之前,我需要检查表2中是否已经存在任何记录,如果存在任何单个记录,则跳过该记录并插入其余的记录 例如:我想从table1在table2中插入记录101和102,但如果记录101已经存在于表2中,则跳过101并插入102 这是我将记录从table1插入table2 INSERT INTO table2 (owner_id, month,date,medium,

如果我的问题不合适,很抱歉,但我需要一个项目的答案

实际上,我想将多条记录从MySql的
table1
插入到
table2
。但是在
表2
中插入记录之前,我需要检查
表2
中是否已经存在任何记录,如果存在任何单个记录,则跳过该记录并插入其余的记录

例如:我想从
table1
table2
中插入记录101和102,但如果记录101已经存在于表2中,则跳过101并插入102

这是我将记录从
table1
插入
table2

INSERT INTO table2 (owner_id, month,date,medium, monthly_rent, tax_deduction, final_payment)

SELECT id, 'sep2020','2020/10/05',medium, monthly_rent, tax_deduction, final_payment
 FROM table1

WHERE table1.id =('100','101')

由于id上有主键,因此可以使用INSERT IGNORE。。https://dev.mysql.com/doc/refman/8.0/en/insert.html 如果检测到重复的密钥并且不会添加新行,将抛出警告。比如说

DROP TABLE IF EXISTS T,T1;
CREATE TABLE T (ID INT, VAL INT);
CREATE TABLE T1 (ID INT PRIMARY KEY,VAL INT);

INSERT INTO T VALUES (101,10),(102,20),(103,30);

INSERT IGNORE INTO T1 
 SELECT ID,VAL
FROM T;

UPDATE T SET VAL = 50 WHERE ID = 101;

INSERT IGNORE INTO T1 
 SELECT ID,VAL
FROM T;



mysql> SELECT * FROM T;
+------+------+
| ID   | VAL  |
+------+------+
|  101 |   50 |
|  102 |   20 |
|  103 |   30 |
+------+------+
3 rows in set (0.05 sec)

mysql> SELECT * FROM T1;
+-----+------+
| ID  | VAL  |
+-----+------+
| 101 |   10 |
| 102 |   20 |
| 103 |   30 |
+-----+------+
3 rows in set (0.00 sec)

似乎每次向表1添加新行时,您都希望向表2添加一行,因此可能值得考虑使用触发器来执行此任务

如果您使用的是MySQL,请不要标记其他RDBMS(例如)。表2中有索引吗?索引的意思是@P.Salmon对不起,我不是那么专业。您在id上有主键还是唯一键?是的,id在两个表中都是唯一的和主要的