c# - SQL - 仅当记录不存在时才插入

标签 c# sql sql-server

<分区>

我意识到在同一主题上有很多已回答的 SO 问题,但我似乎无法使用任何这些信息来找出我的查询有什么问题。

仅当具有相同 database_ownerdatabase_name(这是我的两个列名)的记录尚未插入时,我才尝试将记录插入到我的表中存在。

我正在使用查询:

INSERT INTO users_databases (database_name, database_key, database_secret, database_owner) 
VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101-21f39e6ac8d9', 'x@x.com') 
WHERE
   NOT EXISTS 
   (SELECT database_name FROM uses_databases WHERE database_name = 'DB1' AND database_owner = 'x@x.com');

但我收到错误 Incorrect syntax near the keyword 'WHERE'.

我还应该指出运行查询

SELECT database_name 
FROM uses_databases 
WHERE database_name = 'DB1' AND database_owner = 'x@x.com' 

确实返回一条记录。

我哪里出错了?从我在其他问题中读到的内容来看,这看起来是正确的。但显然不是。 :-) 任何建议都会非常有帮助。

最佳答案

最简单的解决方案是这样的:

IF NOT EXISTS (SELECT database_name FROM uses_databases WHERE database_name = 'DB1' AND database_owner = 'x@x.com')
    INSERT INTO users_databases (database_name, database_key, database_secret, database_owner) 
    VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101-21f39e6ac8d9', 'x@x.com');

关于c# - SQL - 仅当记录不存在时才插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689420/

相关文章:

c# 扩展基类的方法

c# - 带比较器的 LINQ 查询语法

c# - 如何使用 Entity Framework 根据最大版本选择多条记录

mysql - 与更新查询混淆。如何将选择转换为使用 MySQL 更新?

sql-server - 将数据库图添加到源代码管理?

c# - Unity3D 中是否有针对 IL2Cpp 构建的运行时代码编译的解决方案?

php - MySQL:可以根据每条记录参数进行分组的 SELECT 条件语句吗?

sql-server - 使用 MS SQL 服务器的 HornetQ 持久性

sql-server - 如何选择数据库中具有特定名称的所有表

c# - 如何解析具有属性的类?