嗯,我从主表(例如 MTB
)中获取一些值,并使用此脚本将其汇总到另一个表(例如 STB
)中。没有唯一键或主键,因此我不能在此处使用重复键情况。
我想要做的是,如果从MTB
获取的节点名称已经存在于STB
中,那么我只想更新它,如果节点名称来自STB
中不存在 MTB
那么我想将数据插入到表中。
我尝试使用 If 情况,首先使用从 MTB
获取的节点名选择 STB
中的行,如果来自 MTB
的节点名code> 存在于 STB
中(即选择查询 IS NOT NULL),然后我们更新它,否则我们插入它。
但是,这不起作用。请指出我做错了什么。
IF (SELECT * FROM `NodesInfo` WHERE `Nodename` = '".$row2['nodeName']."') IS NOT NULL
THEN
UPDATE `NodesInfo` SET `Time Stamp`= '".$row2['timeStamp']."',`Status`= '$status' WHERE `Nodename` = '".$row2['nodeName']."'
ELSE
INSERT INTO `NodesInfo`(`Nodename`, `Category`, `Time Stamp`, `Type`, `Status`) VALUES ('".$row2['nodeName']."','NodeMCUMQTTData','".$row2['timeStamp']."','$type','$status')
END IF
最佳答案
只要看下面的代码,就可以了。 对于 MYSQL:
$qry = mysqli_query(<set your db connection variable>, "SELECT * FROM `NodesInfo` WHERE nodeName` = '".$row2['nodeName']."' ");
$res = mysqli_num_rows($qry);
if($res > 0)
{
$update_qry = mysqli_query(<set your db connection variable>, "UPDATE `NodesInfo` SET `Time Stamp`= '".$row2['timeStamp']."',`Status`= '$status' WHERE nodeName` = '".$row2['nodeName']."'");
}
else
{
$insert_qry = mysqli_query(<set your db connection variable>, "INSERT INTO `NodesInfo`(`Nodename`, `Category`, `Time Stamp`, `Type`, `Status`) VALUES ('".$row2['nodeName']."','NodeMCUMQTTData','".$row2['timeStamp']."','$type','$status')");
}
关于php - 我可以将 SELECT 查询放入 MySQL 的 IF 语句中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56574149/