php - 我可以将 SELECT 查询放入 MySQL 的 IF 语句中吗?

标签 php mysql sql mariadb

嗯,我从主表(例如 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/

相关文章:

php - 根据字符串内容替换字符串的一部分

mysql - 查询重命名表以通过历史链接回溯以从 "a"获取 "d"

mysql - 扁平化 mysql 中的非主键列

sql - 没有延迟约束的正确工作模式是什么?

sql - 字段的复杂排序 "string - number - string"

php - 我如何设置xampp从C盘到D盘的路径

java - 发送 JSON 到服务器不工作(android)

php - 如何处理返回到 jQuery/JSON 对象的 MySQL 结果的分页

mysql - 如何在 MariaDB 中创建函数/过程以在访问表时运行更新脚本?

SQL Server 中的 MySQL CREATE 语句