我有一个用数据集不时更新的数据库.在这里,可能会发生传送数据库中已经存在的数据集的情况.
目前我首先在做一个
SELECT FROM ... WHERE val1=... AND val2=...
判断包含这些数据的数据集是否已存在(使用WHERE-语句中的数据).如果没有返回任何值,我将执行插入操作.
但这对我来说似乎有点复杂.那么我的问题是:是否存在某种条件插入,仅在新数据集不存在的情况下才添加该数据集?
我用的是100
我有一个用数据集不时更新的数据库.在这里,可能会发生传送数据库中已经存在的数据集的情况.
目前我首先在做一个
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,则可能无法遵循上面的建议或其他任何地方.