Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子查询返回了多个值。使用merge和tsql_Sql_Sql Server_Tsql_Merge - Fatal编程技术网

子查询返回了多个值。使用merge和tsql

子查询返回了多个值。使用merge和tsql,sql,sql-server,tsql,merge,Sql,Sql Server,Tsql,Merge,目前,我有一个使用游标的大型存储过程,其中有两个merge语句。简而言之,我想从一个大表填充两个表 现在,我对sql还是个新手,为了扩展我的知识,我读了不少书。在这项研究中,我遇到了许多话题,他们讨论了游标及其可能给出的性能问题 当前的SP(带游标)工作正常,但我一直试图在没有游标的情况下使用我的代码(其他POV),这让我非常恼火 所以现在我被这段垃圾代码困住了。我想这是不可能做到的方式,我想它,但嘿,我可以尝试的权利 错误:子查询返回的值超过1。当子查询后跟=、!=、时,不允许这样做 删除se

目前,我有一个使用游标的大型存储过程,其中有两个merge语句。简而言之,我想从一个大表填充两个表

现在,我对sql还是个新手,为了扩展我的知识,我读了不少书。在这项研究中,我遇到了许多话题,他们讨论了游标及其可能给出的性能问题

当前的SP(带游标)工作正常,但我一直试图在没有游标的情况下使用我的代码(其他POV),这让我非常恼火

所以现在我被这段垃圾代码困住了。我想这是不可能做到的方式,我想它,但嘿,我可以尝试的权利


错误:子查询返回的值超过1。当子查询后跟=、!=、时,不允许这样做 删除select语句..下面的语句负责使用哪个表更新哪个表

MERGE CONTACTS as target
USING STAGING_CONTACTS as source
因此,您的查询可以如下所示

  UPDATE SET
        MAIL = MAIL ,
        and so on...
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (mail,name,brand,id)
   MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
        target.MAIL = source.MAIL,
      and so on..
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (source.all columns....)
您还可以使用如下所示的别名

  UPDATE SET
        MAIL = MAIL ,
        and so on...
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (mail,name,brand,id)
   MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
        target.MAIL = source.MAIL,
      and so on..
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (source.all columns....)

删除select语句..下面的语句负责使用哪个表更新哪个表

MERGE CONTACTS as target
USING STAGING_CONTACTS as source
因此,您的查询可以如下所示

  UPDATE SET
        MAIL = MAIL ,
        and so on...
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (mail,name,brand,id)
   MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
        target.MAIL = source.MAIL,
      and so on..
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (source.all columns....)
您还可以使用如下所示的别名

  UPDATE SET
        MAIL = MAIL ,
        and so on...
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (mail,name,brand,id)
   MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
        target.MAIL = source.MAIL,
      and so on..
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES (source.all columns....)
使用下面的脚本

MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
       target.MAIL =   source.MAIL ,
        target.NAME =  source.Name,
        target.BRAND = source.BRAND ,
        target.ID =    source.ID 
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES ( source.MAIL , source.Name, source.BRAND ,source.ID );
使用下面的脚本

MERGE CONTACTS as target
USING STAGING_CONTACTS as source
ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET
       target.MAIL =   source.MAIL ,
        target.NAME =  source.Name,
        target.BRAND = source.BRAND ,
        target.ID =    source.ID 
WHEN NOT MATCHED THEN 
    INSERT (MAIL, NAME, BRAND, CORESOLEIL_ID)
    VALUES ( source.MAIL , source.Name, source.BRAND ,source.ID );

合并是一个有缺陷的实现,并且在以后出现潜在数据问题时很难调试。我绝不允许任何人在我们的生产数据库中使用它。最好先使用update语句,然后再使用Insert(顺序很重要)。合并是一个有缺陷的实现,并且在以后出现潜在数据问题时很难调试。我绝不允许任何人在我们的生产数据库中使用它。最好先使用update语句,然后再使用Insert(顺序很重要)