SQL-插入Select查询并从另一个表中查找值

SQL-插入Select查询并从另一个表中查找值,sql,sql-server-2008,Sql,Sql Server 2008,早上好,我需要一些帮助 我有一个数据库和几个表。我正在尝试编写一个INSERT INTO和SELECT查询,该查询将所有值从一个表(TableA)复制到另一个表(TableD),但将一个值替换为在另一个表(TableB)中查找的值 表A包含各种字段,包括TableBRef 表B包括以TableBRef开头的各种字段,还包括TableCRef字段 我想将所有的TableA复制到表D中,但将TableBRef替换为TableCRef即我知道TableBRef,我需要在TableB中搜索它,并从Tab

早上好,我需要一些帮助

我有一个数据库和几个表。我正在尝试编写一个INSERT INTO和SELECT查询,该查询将所有值从一个表(TableA)复制到另一个表(TableD),但将一个值替换为在另一个表(TableB)中查找的值

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

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

我想将所有的TableA复制到表D中,但将TableBRef替换为TableCRef即我知道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

抱歉,我认为称它们为泛型表名可能会有所帮助,但实际上有点让人困惑:-)

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

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

谢谢你的帮助。我将左侧外部连接更改为a.BRef=b.BRef以匹配我的关系,它工作得非常好。谢谢,太好了!因为我不知道如何把它们联系起来。但祝贺你!