gpt4 book ai didi

sql - 在合并语句中使用连接

转载 作者:行者123 更新时间:2023-12-03 11:20:25 25 4
gpt4 key购买 nike

问题

表格1:

| KeyColumn | DataColumn1 | DataColumn2|  
01 0.1 0.2
02 0.13 0.41

表 2:
| anotherKey | DataColumn1 | DataColumn2|      
A1 .15 1.2
A2 .25 23.1

表3:
|KeyColumn| anotherKey |       
01 A1
02 A1

给定一个键(A1 或 A2),我需要使用表 2 中的相应值更新表 1 中的 DataColumn1 和 DataColumn2 列。

所以 table1 可以更新 x 行,如上面的数据所示。如果我想更新 A1,则 01 和 02 行都应该更新

(所以 table1 中的值对于 datacolumn1 和 1.2 对于 datacolumn2 在键 01 和 02 上都是 0.15)

到目前为止我尝试过的:
MERGE table1
USING (SELECT *
FROM table2
LEFT OUTER JOIN table3
on table2.anotherKey = table3.anotherKey
WHERE table2.anotherKey = 'A1') tmpTable
ON
table1.keyColumn = tmpTable.keyColumn
WHEN MATCHED THEN
UPDATE
SET table1.DataColumn1 = tmpTable.DataColumn1
,table1.DataColumn2 = tmpTable.DataColumn2;

问题:
  • 这是允许的吗?在 using 语句中使用 select ?我在第 1 行遇到语法错误
  • 有没有更好的方法来解决这个问题?我是否让这变得比它必须的更复杂?
  • 我究竟做错了什么?

  • 和错误:

    消息 102,级别 15,状态 1,第 1 行
    'a' 附近的语法不正确。
    消息 102,级别 15,状态 1,第 12 行
    'd' 附近的语法不正确。

    最佳答案

    您的查询将给出错误

    Msg 8156, Level 16, State 1, Line 59 The column 'AnotherKey' wasspecified multiple times for 'tmpTable'.


    那是因为您正在使用 *在 using 子句和 AnotherKey 中是两者的一部分 table2table3 .
    指定您需要的列。此外,由于您使用的是 keycolumn,因此在那里进行外部联接也没有用处。在 on条款。
    MERGE table1
    USING (SELECT table3.keycolumn,
    table2.DataColumn1,
    table2.DataColumn2
    FROM table2
    INNER JOIN table3
    ON table2.anotherKey = table3.anotherKey
    WHERE table2.anotherKey = 'A1') tmpTable
    ON
    table1.keyColumn = tmpTable.keyColumn
    WHEN MATCHED THEN
    UPDATE
    SET table1.DataColumn1 = tmpTable.DataColumn1
    ,table1.DataColumn2 = tmpTable.DataColumn2;
    更新
    发布实际错误总是有帮助的。

    Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'a'. Msg 102,Level 15, State 1, Line 12 Incorrect syntax near 'd'.


    看起来您使用的是 SQL Server 2005。从 SQL Server 2008 可以进行合并。 .
    您可以使用 select @@version 检查您的 SQL Server 版本。 .

    关于sql - 在合并语句中使用连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903446/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com