SQL-批量插入到无重复项中

SQL-批量插入到无重复项中,sql,sql-server,Sql,Sql Server,我有一个触发器,当数据插入到表中时触发。插入到所述表中的数据取自JSON,JSON工作正常。我的问题是,我想将此表中的数据分离到单独的表中。我想把这些国家储存在它们自己的桌子上。它正在提取数据,但正在插入重复数据。如何从存储中消除重复项 CREATE TRIGGER main.afterParsing ON main.jsontable AFTER INSERT AS BEGIN --Rows DECLARE @Count INT; SET @Count = @@ROW

我有一个触发器,当数据插入到表中时触发。插入到所述表中的数据取自JSON,JSON工作正常。我的问题是,我想将此表中的数据分离到单独的表中。我想把这些国家储存在它们自己的桌子上。它正在提取数据,但正在插入重复数据。如何从存储中消除重复项

CREATE TRIGGER main.afterParsing 
ON main.jsontable
AFTER INSERT
AS
BEGIN
    --Rows
    DECLARE @Count INT;
    SET @Count = @@ROWCOUNT;

    --Person Variables
    DECLARE @PersonName NVARCHAR(50)
    DECLARE @PersonSurname NVARCHAR(50)
    DECLARE @PersonEmail NVARCHAR(50)
    DECLARE @PersonAge NVARCHAR(50)
    DECLARE @PersonCountry NVARCHAR(50)
    DECLARE @PersonRegistered NVARCHAR(50)

    --Insert Country
    INSERT INTO country(countryName)
        SELECT jsontable.country
        FROM jsontable
        WHERE NOT EXISTS ((SELECT countryName 
                           FROM country 
                           WHERE country.countryName = jsontable.country)) 
          AND (jsontable.country IS NOT NULL)

    --Get Person

    --Insert Person

END;

通过简单地将SELECT语句修改为SELECT DISTINCT就解决了我的小问题。

根据语法,我推测这是SQL Server,但您应该准确地标记自己的问题。您应该调查合并。到目前为止,我在查询中没有发现任何问题。唯一的可能是将where子句替换为以下方式S-Get Country SELECT@CountryCountry=jsontable.Country FROM inserted jsontable;如果不存在,请从LTRIMRTRIMCountryName所在的国家/地区选择CountryName=LTRIMRTRIM@CountryCountryBEGIN-Insert Country Insert INTO COUNTRYNAME VALUES@CountryCountry END当没有使用这些变量时,所有变量声明的含义是什么?您也不需要插入引用。我对你现在的陈述感到困惑。声明将在声明中进一步使用,但我想在继续之前修正第一部分。还有为什么我需要插入参考?参考我以前的答案