如果多个列具有相同的值,则MySQL插入或更新

时间:2019-07-17 17:23:35

标签: mysql

我试图让我的SQL查询仅在两行或多列的插入值与现有行匹配时才更新行,否则在行不存在时进行插入。

我的表格包含以下列

id | device_id | ifIndex | ifDescription | ifSpeed.....

让我们说以下几行

id | device_id | ifIndex | ifDescription | ifSpeed.....
 1 |         1 |       1 | ether1        | 1000
 2 |         3 |       1 | ether1        | 100

我希望查询如下:

如果我用1 | 1 | port1 | 100插入一行,mysql必须基于device_idifIndex

更新该行。

因此,与第一个表相比,如果我要运行查询,我希望表看起来像这样:

id | device_id | ifIndex | ifDescription | ifSpeed.....
 1 |         1 |       1 | port1         | 100
 2 |         3 |       1 | ether1        | 100 

我已经检查了一下,但是找不到我想要的东西,但是我认为与ON DUPLICATE KEY UPDATE有关系

我尝试构建的当前查询:

INSERT INTO device_ports (device_id, ifIndex, ifDescr, ifOperStatus, ifLastChange, ifAdminStatus, ifSpeed, ifPhysAddress, ifMtu, ifType) VALUES 
(
    '".$device['id']."', 
    '".$device_ports['ifIndex'][$i]."', 
    '".$device_ports['ifDescr'][$i]."', 
    '".$device_ports['ifOperStatus'][$i]."',
    '".$device_ports['ifLastChange'][$i]."',
    '".$device_ports['ifAdminStatus'][$i]."',
    '".$device_ports['ifSpeed'][$i]."',
    '".$device_ports['ifPhysAddress'][$i]."',
    '".$device_ports['ifMtu'][$i]."',
    '".$device_ports['ifType'][$i]."'
)
ON DUPLICATE KEY UPDATE device_id='".$device['id']."', ifIndex='".$device_ports['ifIndex'][$i]."'

0 个答案:

没有答案