Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sqlserverce;仅当不存在时可以插入,如果存在则可以删除?_Sql_Sql Server - Fatal编程技术网

使用sqlserverce;仅当不存在时可以插入,如果存在则可以删除?

使用sqlserverce;仅当不存在时可以插入,如果存在则可以删除?,sql,sql-server,Sql,Sql Server,我在SQLCE中有一个单字段表,我需要一个SQL语句。目标是删除已存在的记录,并插入不存在的记录。SQL CE是否有可能实现此功能 INSERT INTO Source_Table SELECT 'myvalue' AS Expr1 WHERE (NOT EXISTS (SELECT Source_Data FROM Source_Table AS Source_Table_1

我在SQLCE中有一个单字段表,我需要一个SQL语句。目标是删除已存在的记录,并插入不存在的记录。SQL CE是否有可能实现此功能

INSERT INTO Source_Table
SELECT     'myvalue' AS Expr1
WHERE     (NOT EXISTS
                 (SELECT     Source_Data
                 FROM        Source_Table AS Source_Table_1
                 WHERE     (Source_Data = 'myvalue')))
为什么不

DELETE Source_Table WHERE Source_Data = 'myvalue'
GO
INSERT INTO Source_Table (Source_Data) values('myvalue')

我不确定删除一条记录然后插入相同的数据有什么意义,但这应该可以做到。

如果目的是删除存在的记录,而只插入不存在的记录,那么你需要按照你写的做

如果目标是在不存在时插入,如果存在则替换,那么Adam是正确的,您也可以在插入之后始终运行delete。我会在同一个语句批处理中运行这两个语句,以节省开销


如果有多个字段,您当然会进行更新,而不是先删除后插入。(但删除后再插入是Sybase内部执行更新的方式。)

重申目标:只会发生一次。1.如果记录存在,它将被删除。2.如果记录不存在,它将被插入。一个答案可能是SQL CE不支持批处理查询。如果你不得不为此执行两个单独的查询,那就有点麻烦了。在SQLCE3.5sp1中,SQL对我来说执行得很好。你看到不同的结果了吗?