我有一个用数据集不时更新的数据库.在这里,可能会发生传送数据库中已经存在的数据集的情况.

目前我首先在做一个

SELECT FROM ... WHERE val1=... AND val2=...

判断包含这些数据的数据集是否已存在(使用WHERE-语句中的数据).如果没有返回任何值,我将执行插入操作.

但这对我来说似乎有点复杂.那么我的问题是:是否存在某种条件插入,仅在新数据集不存在的情况下才添加该数据集?

我用的是100

推荐答案

在几乎所有的关系数据库中,您都可以使用单个语句和子查询来做到这一点.

INSERT INTO targetTable(field1) 
SELECT field1
FROM myTable
WHERE NOT(field1 IN (SELECT field1 FROM targetTable))

某些关系数据库改进了上述语法,因为您描述的是一项相当常见的任务.SQL Server有一个包含各种选项的MERGE语法,MySQL有可选的INSERT OR IGNORE语法.

Edit: SmallSQL's documentation对于它实现的SQL标准的哪些部分是相当稀少的.它可能不实现子查询,因此,如果您需要坚持使用SmallSQL,则可能无法遵循上面的建议或其他任何地方.

Database相关问答推荐

从仅连接器电源查询制作图表

如何在 N1QL 查询(Couchbase 查询)中使用 LENGTH() 字符串函数

MySQL主键:UUID / GUID vs BIGINT(时间戳+随机)

优雅地处理 EJB/JPA 环境中的约束冲突?

如何打印出 sequelize 实例的表名?

MongoDB:查询具有两个相等字段 $match 和 $eq 的文档

是否可以使用 Mongo 的 Object ID作为其唯一标识符?如果是这样,如何将其转换为字符串并按字符串查找?

Oracle 和 SQL Server 中的 NVARCHAR 之间的区别?

Boyce-Codd 范式的良好 KISS 描述是什么?

ER图中的一对多关系

锁定机制(悲观/乐观)如何与数据库事务隔离级别相关?

Joomla 数据库设置

如何从 Django 中的 sql 模式生成数据模型?

使用多个数据库模式的 JPA

SQL 中的 CAST 和 CONVERT 是否相同?

如何从数据库中解析时间

如何在文件系统中存储图像

可以将 SQLAlchemy 配置为非阻塞吗?

如何在 SQL Server 中创建数据库的别名

使用命令行在 Mysql 中导入压缩文件