![](/img/trans.png)
[英]Insert an entire row into an InnoDB table from another if the ID doesn't exsist
[英]SQL Insert row if not exsist
我对 mySQL 很陌生,请多多包涵。
我有一个一直在增长的数组,假设现在它有 4 个项目。 我需要 sql 来搜索表并为数组中的每个项目插入一个新行,但前提是它是一个新项目(意味着它尚未插入)。 表中有 5 列,行中的每个项目都需要是一个变量,以便我可以传递动态数据。
我知道这很遥远,但我现在拥有的是这样的。
$array_count = array(1,2,3,4);
$var1 = 'value 1';
$var2 = 'value 2';
$var3 = 'value 3';
$var4 = 'value 4';
$var5 = 'value 5';
$sql = "INSERT INTO membership_levels VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')";
如果您的数据库是 MySql,您可以像 Brad Christie 所写的Insert On Duplicate一样使用。 如果您只想在它们都是相同值的情况下插入,则需要在 5 列上有一个主键。
您的 $sql 将更改为:
$sql = "INSERT INTO membership_levels(a,b,c,d) VALUES VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c = VALUES(c), d = VALUES (d);"
您也可以使用替换关键字。 如果该行存在,它将为您删除它并插入新行。
$sql = "REPLACE INTO membership_levels VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')";
如果您的数据库是 MsSql(Sql 服务器),则它是 2 个查询:
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)"
如果 SQL 服务器最好的方法是使用存储过程。
看看这篇我相信可以回答你的问题的文章: http://www.xaprb.com/blog/2005/09/25/insert-if-not-exists-queries-in-mysql/
它显示了编写 SQL 查询以克服缺少“IF NOT EXISTS”语法的几种可能方法。 请注意,如果您使用的是 SQL 服务器,则可以编写 IF NOT EXISTS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.