我有一个不时更新数据集的数据库。这里可能会发生传递数据库中已存在的数据集的情况。
目前我首先做一个
SELECT FROM ... WHERE val1=... AND val2=...
检查包含这些数据的数据集是否已存在(使用 WHERE 语句中的数据)。如果这没有返回任何值,我正在执行插入操作。
但这对我来说似乎有点复杂。所以我的问题是:是否有某种条件插入仅在新数据集不存在的情况下添加它?
我在用着SmallSQL http://www.smallsql.de/
在几乎所有关系数据库中,您都可以使用单个语句和子查询来完成此操作。
INSERT INTO targetTable(field1)
SELECT field1
FROM myTable
WHERE NOT(field1 IN (SELECT field1 FROM targetTable))
某些关系数据库改进了上述语法,因为您所描述的是一项相当常见的任务。 SQL Server 有一个MERGE
具有各种选项的语法,MySQL有可选的INSERT OR IGNORE
syntax.
Edit: SmallSQL 的文档 http://www.smallsql.de/doc/sqlsyntax.html关于它实现的 SQL 标准的哪些部分的信息相当稀疏。它可能不会实现子查询,因此,如果您需要坚持使用 SmallSQL,您可能无法遵循上面的建议或其他任何地方的建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)