我试图让我的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_id
和ifIndex
因此,与第一个表相比,如果我要运行查询,我希望表看起来像这样:
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]."'