使用T-SQL填写缺失的行

时间:2018-07-30 19:44:12

标签: sql-server tsql

我正在尝试填写缺失的值。一个简单的示例是表A有10行,其ID为1到10。

表B有5行1,3,5,7,9

我需要使用表A来填写表B中缺少的偶数。

最好的方法是什么?

4 个答案:

答案 0 :(得分:0)

CREATE TABLE #A (
    Id INT
    ,Val VARCHAR(10)
    )

CREATE TABLE #B (
    Id INT
    ,Val VARCHAR(10)
    )

INSERT INTO #A (
    Id
    ,Val
    )
VALUES (
    1
    ,'1'
    )

INSERT INTO #A (
    Id
    ,Val
    )
VALUES (
    2
    ,'2'
    )

INSERT INTO #A (
    Id
    ,Val
    )
VALUES (
    3
    ,'3'
    )

INSERT INTO #B (
    Id
    ,Val
    )
VALUES (
    1
    ,'1'
    )

INSERT INTO #B (
    Id
    ,Val
    )

SELECT Id
    ,Val
FROM #A a
WHERE NOT EXISTS (
        SELECT NULL
        FROM #B b
        WHERE b.Id = a.Id
        )
        AND a.Id % 2 = 0

Select * from #B

答案 1 :(得分:0)

使用for循环对表A进行选择查询,该循环将比较每个循环的搜索结果。如果我不匹配,请执行插入操作。如果要在DB内部运行它,请为其创建SP,否则,请创建一个简单的控制台应用程序或类似的应用程序。

答案 2 :(得分:0)

您可以使用INSERT INTO ... SELECT...

INSERT INTO A
SELECT B.ID FROM B 
WHERE B.ID % 2 = 0
AND B.ID NOT IN (SELECT ID FROM A)

只需确保SELECT与您要插入的列相同。

答案 3 :(得分:0)

您可以像下面这样使用'noModule' in HTMLScriptElement.prototype

not exists

SQL HERE