繁体   English   中英

SQL 如果不存在则插入行

[英]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 - 重复密钥

如果您的数据库是 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);"

Mysql - 更换

您也可以使用替换关键字 如果该行存在,它将为您删除它并插入新行。

$sql = "REPLACE INTO membership_levels VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')";

MsSql

如果您的数据库是 MsSql(Sql 服务器),则它是 2 个查询:

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
    INSERT INTO Table1 VALUES (...)"

如果 SQL 服务器最好的方法是使用存储过程。

正在寻找INSERT... ON DUPLICATE UPDATE语法?

我需要 PK(主键)给你一个准确的查询来运行......

假设这是 MySQL 给定 PHP 标签

看看这篇我相信可以回答你的问题的文章: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM