我正在尝试使用以下代码从两个现有表创建一个新表:
SELECT * INTO CustAndOrders from SalesLT.Customer
FULL JOIN
SalesLT.SalesOrderHeader
ON Customer.CustomerID=SalesOrderHeader.CustomerID;
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误:
Column names in each table must be unique. Column name 'CustomerID' in table 'CustAndOrders' is specified more than once.
Run Code Online (Sandbox Code Playgroud)
我的目的是创建第三个表,其中包含每个连接表中的所有字段。显然“CustomerID”出现了两次,这就是我要加入的。如果我删除 INTO 部分并作为 SELECT 语句执行,它会按预期工作。
以防万一不清楚问题是什么,SELECT
有两列被称为CustomerID
. 每张桌子一个。一个表不能有两个相同命名的列,因此尝试创建具有该格式的表会失败。
解决方案是不要使用 *
.
明确列出您想要的列并删除您不需要的重复列,或使用列别名来消除您实际需要的任何重复项的歧义。
通常对于完整的外部联接,您真正想要的是
SELECT COALESCE(Customer.CustomerID,SalesOrderHeader.CustomerID) as CustomerID
/*, other columns*/
INTO CustAndOrders
FROM SalesLT.Customer
FULL JOIN SalesLT.SalesOrderHeader
ON Customer.CustomerID = SalesOrderHeader.CustomerID;
Run Code Online (Sandbox Code Playgroud)
但无论如何你都需要一个完整的外部连接似乎令人怀疑。可能你需要一个LEFT JOIN
归档时间: |
|
查看次数: |
1860 次 |
最近记录: |