【问题标题】:SQL if matched update if not matched then insertSQL 如果匹配则更新如果不匹配则插入
【发布时间】:2014-01-26 18:45:06
【问题描述】:

请帮忙解决这个问题... 我正在尝试在 VB 中实现此 SQL 代码,代码适用于更新但不适用于插入...

merge into anamneza a
using (select ana_id from anamneza where ana_id = 2) e 
on (a.ana_id = e.ana_id)
when matched then 
update set a.ana_kupanje = 'da' 
when not matched then
insert (ana_rb,ana_id,ana_kupanje,ana_kosa,ana_brijanje,ana_zubi,ana_nokti,ana_odjeca,ana_koza,ana_dek_rizik,ana_dek_rizik_gdje,ana_dek_postojeci,ana_dek_post_gdje,ana_pokretnost,ana_kolica,ana_pomagala,azurirao,datumazur)
values (1,1,'da','da','da','da','da','da','da','da','da','da','da','da','da','da','veki',getdate());

首先我在 SQLQuery 中编写并执行它,它说 (0 行受影响)

但是当我插入该行并且它的 id=1 并更改选择它匹配 ana_id = 1 时,它说(1 行受影响);

为什么插入语句不起作用???

【问题讨论】:

标签: sql sql-server vb.net sql-server-2008


【解决方案1】:

按照Using SQL Server MERGE command with same source & target table 中的建议,将MERGE 语句的第2 行替换为:

using (
    select 1 as ana_rb, 1 as ana_id,
           'da' as ana_kupanje, 'da' as ana_kosa, 'da' as ana_brijanje,
           'da' as ana_zubi, 'da' as ana_nokti, 'da' as ana_odjeca,
           'da' as ana_koza, 'da' as ana_dek_rizik, 'da' as ana_dek_rizik_gdje,
           'da' as ana_dek_postojeci, 'da' as ana_dek_post_gdje,
           'da' as ana_pokretnost, 'da' as ana_kolica, 'da' as ana_pomagala,
           'veki' as azurirao, getdate() as datumazur
) e

注意:确保值与INSERT 部分中的值匹配!

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    相关资源
    最近更新 更多