SQL - 插入到选择查询,查找另一个表中的值

时间:2013-12-11 10:45:15

标签: sql sql-server-2008

早上好,我需要一些帮助。

我有一个包含多个表的数据库。我正在尝试编写一个INSERT INTO和SELECT查询,将所有值从一个表(TableA)复制到另一个表(TableD)中,但用一个值替换另一个表中的值(表B)。

表A包含各种字段,包括TableBRef

表B包括以TableBRef开头的各种字段,还包括字段TableCRef

我想将所有TableA复制到表D中,但将TableBRef替换为TableCR,即我知道TableBRef,我需要在TableB中搜索它并从TableCRef字段返回相关值。

INSERT INTO TableD
                      (DRef, CRef, DData1, DData2)
SELECT     TableA.ARef, TableB.CRef, TableA.AData1, TableA.AData2
FROM         TableD AS TableD_1 CROSS JOIN
                      TableC CROSS JOIN
                      TableA INNER JOIN
                      TableB ON TableA.BRef = TableB.BRef

抱歉,我认为将它们称为通用表名可能有所帮助,但实际上有点令人困惑: - )

1 个答案:

答案 0 :(得分:0)

我不明白你如何关联每个表,但看看这个查询是否适合你

INSERT INTO TableD
           (DRef, CRef, DData1, DData2)
SELECT     a.ARef, c.CRef, a.AData1, a.AData2
from        tableA a
            left outer join tableB b on a.ARef = b.ARef
            inner join tableC c on b.CRef = c.CRef