如果存在则插入所有记录的else更新

时间:2017-12-01 06:11:25

标签: sql sql-server sql-update

我正在使用from setuptools import find_packages from setuptools import setup REQUIRED_PACKAGES = ['tf-nightly-gpu==1.5.0-dev20171115'] setup( name="nmt", install_requires=REQUIRED_PACKAGES, packages=find_packages(), include_package_data=True, version='0.1.2' )

我有两张桌子。我想SQL server 2012第二张桌子。

我正在尝试使用UPDATE概念。但这是单曲。我想检查整个表。所以每次都不可能给出主键值。

简单地说,我必须扫描第一个表并且parellaly更新第二个表。 所以请给我一个脚本。

2 个答案:

答案 0 :(得分:0)

尝试这个

首次运行UPDATE的动态生成查询

SELECT 'UPDATE TABLEA SET SizeCode ='''+SizeCode+''' ', FROM TABLEB WHERE SizeCode IN (SELECT SizeCode FROM TableA)

一旦所有现有数据都已更新,您只需运行表A中不存在的Insert语句。

INSERT INTO TableA
SELECT * FROM TABLEB WHERE SizeCode NOT IN (SELECT SizeCode FROM TableA)

OR

  INSERT INTO TableA (SizeCode )
    SELECT SizeCode  FROM TABLEB WHERE SizeCode NOT IN (SELECT SizeCode FROM TableA)

答案 1 :(得分:0)

试试这个,这将检查数据是否存在然后它插入记录否则将更新数据

根据您的表格更改声明,因为我对您的表格一无所知

BEGIN
   IF NOT EXISTS (SELECT * FROM EmailsRecebidos 
                   WHERE De = @_DE
                   AND Assunto = @_ASSUNTO
                   AND Data = @_DATA)
   BEGIN
       INSERT INTO EmailsRecebidos (De, Assunto, Data)
       VALUES (@_DE, @_ASSUNTO, @_DATA)
   END
   ELSE
BEGIN
UPDATE EmailsRecebidos  SET A = 'a'  WHERE De = @_DE
                   AND Assunto = @_ASSUNTO
                   AND Data = @_DATA
END

END