小编典典

如果table2中不存在,如何插入表1中?

sql

我是mysql的新手。我在将记录插入到table1中时遇到问题,如果它在table2中不存在。我有2个表table1和table2形式:

table1

dep_id  start     stop     modified deleted                 
1       23456789  167921525   Yes      No
2       34567812  345678145   Yes      No
3       32789054  327890546   No       No


table2

start     stop     modified deleted                 
23456789  167921525  No       No
34567823  345678145  No       No
32789053  727890546  No       No

我试图仅在table2的“开始”和“停止”列中不存在值时才将值插入到table1的开始和停止字段值中。如果存在,我需要抛出一个错误。这些表没有主键外键关系。抱歉,我不知道正确的语法,但是我必须在mysql和PHP中执行类似的操作。

Replace Into into table1 set 'start'=> $start,'stop' => $stop
(select 'start','stop' from table2 where table1.start and table1.stop not in table2.start and table2.stop);

在插入到table1之前,如何查询这两个表以检查Table1.start和Table1.stop字段是否与Table2.start和Table2.stop不匹配?


阅读 258

收藏
2021-04-07

共1个答案

小编典典

你可以做:

INSERT INTO table1 (start, stop)
SELECT    a.*
FROM      (SELECT 123456789 start, 234567890 stop) a
LEFT JOIN table2 b ON (a.start,a.stop) IN ((b.start,b.stop))
WHERE     b.start IS NULL

其中123456789234567890是分别用于start和的输入值stop

然后,您可以根据所使用的数据库接口(PDO,mysqli等),使用rowCount或num_rows_affected对其进行检查。如果为0,则不插入任何记录,否则,发生插入。


2021-04-07