仅当其他表中存在相同值时才插入新SQL行

时间:2017-11-11 12:50:40

标签: php mysql

目前我有,

表1:

Web View

表2:

NavigationStarting

有一个表单要填充,以便使用AJAX POST到PHP在Table1中插入新的DEVICEID和STATUS。在更新SQL之前,如果只有相同的 DEVICEID填写在表2中的DEVICEID表单中,否则我将创建一个只能才能更新Table1的条件,否则它将返回错误并且不会更新Table1。

这就是我所拥有的:

ID  |   DEVICEID    |  STATUS  |
--------------------------------
1   |   SN001       |  ENROLL  |
2   |   SN002       |  ENROLL  |

3 个答案:

答案 0 :(得分:0)

INSERT INTO table1
SELECT DEVICEID, STATUS
FROM Table2
WHERE DEVICEIUD = @param1 AND STATUS = @param2
LIMIT 1

SELECT ROW_COUNT();

并检查影响行数

答案 1 :(得分:0)

我通常会进行两次查询

PDO

然后,如果你正在使用rowCount is == 0检查if ($stmt->rowCount == 0) { "INSERT INTO table1(deviceId,status) VALUES('$deviceid', '$status') WHERE deviceid = deviceid "; } else { echo "Device ID already exists."; } 是否喜欢这个

SELECT EXISTS ()

请注意,使用0只会返回1SELECT deviceid FROM table1 INNER JOIN table2 ON table1.deviceid=table2.deviceid LIMIT 1 ,因此您无法获取任何数据,如果您想要返回某些数据,可以跟

一起去
PDO

此外,如果您在使用rowCount()时获取数据,请使用fetchColumn()代替<div class="container"> <form > <fieldset class="form-group row"> <div style="float: left;"> <label for="email" class="control-label col-sm-2">Email</label> <div class="col-sm-10"> <input type="email" class="form-control" id="email" /> </div> </div> <div style="margin-left: 250px"> <label for="password" class="control-label col-sm-2">Password</label> <div class="col-sm-10"> <input type="password" id="password" class="form-control" /> </div> </div> </fieldset> <fieldset class="form-group"> <button type="submit" class="btn btn-primary">Submit</button> </fieldset> </form> </div>

答案 2 :(得分:0)

由此解决:

INSERT INTO table1 (deviceid, status)
SELECT DISTINCT '$deviceid','$status'
FROM table2
WHERE deviceid='$deviceid' AND status='$status'

感谢:Insert Into table If similar value exists in another existing table (not a foreign key)

每个帮助过我的人。 :)