我想知道是否有办法可以在一个sql语句中执行以下操作。
我正在解析csv文件,以便将产品插入到数据库中。有没有办法我可以检查一下 X 表中的条目是否等于 N ,如果这样更新其余的列,否则插入它?
问候
菲尔
答案 0 :(得分:3)
此类操作有时称为“UPSERT”。 SQL标准的方法是使用MERGE
语句,但不幸的是它尚未广泛实现。
有些数据库已经添加了自己的方法,例如非标准的MySQL扩展REPLACE
和INSERT ... ON DUPLICATE KEY UPDATE
。
答案 1 :(得分:1)
MERGE语句可以帮助您,但它仅适用于SQL Server 2008 R2。否则,您需要将其视为一个缓慢变化的维度,并将数据带入临时表并比较或使用集成服务包来完成工作。
答案 2 :(得分:0)
这样的事情对你有用吗?
if(update myTable where x='n')
else{
insert into myTable(x,y,z) values(1,2,3)
}
更新查询将无论如何运行,如果它无法更新该记录,则会返回false,从而导致它进行插入。