Php 如果ID不为';不存在
我试图将数据从一个表插入到另一个表,但前提是整行不存在 每一行都有一个自动递增的ID。我只是想检查一下ID,如果没有的话就插入这一行 我见过人们使用:Php 如果ID不为';不存在,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我试图将数据从一个表插入到另一个表,但前提是整行不存在 每一行都有一个自动递增的ID。我只是想检查一下ID,如果没有的话就插入这一行 我见过人们使用: INSERT IGNORE——我还没有看到关于它的明确解释 在重复密钥更新时插入-这并不理想,因为我不想更新任何现有行,我想插入新行 到目前为止,我编写的代码似乎不起作用: INSERT INTO $tableNameOrig o SELECT * FROM $tableNameTemp t WHERE NOT EXISTS(SELECT i
——我还没有看到关于它的明确解释INSERT IGNORE
-这并不理想,因为我不想更新任何现有行,我想插入新行在重复密钥更新时插入
INSERT INTO $tableNameOrig o
SELECT * FROM $tableNameTemp t
WHERE NOT EXISTS(SELECT id FROM $tableNameOrig WHERE o.id=t.id);
有人知道我怎样才能做到这一点吗
谢谢你的时间,我已经绞尽脑汁好几个小时了
更新-已解决
结果是,没有为每个表名分配一个字母(o和t),而是在整个查询过程中使用表名:
INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp
WHERE NOT EXISTS(SELECT id FROM $tableNameOrig WHERE $tableNameOrig.id = $tableNameTemp.id);
那是我肩上的重担 试试:
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql = "INSERT INTO contacts VALUES
(
'SpongeBob','Squarepants','0415252522'
)";
// Execute query
if(mysql_query($sql,$con))
echo "data inserted";
else
echo "could not insert data";
////dis will allow to do it
或:
感谢您的快速响应,我自己解决了这个问题,在整个查询过程中将“o”和“t”替换为它们各自的表名!谢谢你的快速回复,但我恐怕看不出这是如何回答我的问题的。这个答案与这个问题有关系吗?
INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp t
WHERE NOT EXISTS (SELECT id FROM $tableNameOrig WHERE $tableNameOrig.id = t.id);
INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp t
WHERE t.id NOT IN (SELECT id FROM $tableNameOrig);