我试图将数据从一个表插入到另一个表中,只有整行不存在。
每行都有一个自动递增ID。我只是要检查aganist ID,如果没有则插入行。
我见过人们使用:
INSERT IGNORE
- 我没有看到明确的解释。INSERT ON DUPLICATE KEY UPDATE
- 这并不理想,因为我不想更新任何现有行,我想插入新行。到目前为止我写的代码似乎没有起作用:
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);
这是我肩膀的重量!
答案 0 :(得分:1)
尝试:
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);
答案 1 :(得分:-1)
<?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