无法分配第二个 sql 别名

Cannot assign the second sql alias

我很难让我的第二个别名在下面的示例中工作。 我正在使用松鼠 SQL 3.7

出现错误

Error: [SQL5001] Column qualifier or table T2 undefined. SQLState: 42703 ErrorCode: -5001

UPDATE myDatabaseOne.myTableOne t1
SET 
    firstFieldToCopy = (SELECT DISTINCT alternateField FROM myDatabaseTwo.myTableTwo t2)
WHERE t1.firstFieldToCopy = t2.alternateField;  

你的意思是...

UPDATE myDatabaseOne.myTableOne t1
    SET firstFieldToCopy = (SELECT DISTINCT alternateField 
        FROM myDatabaseTwo.myTableTwo t2
        WHERE t1.firstFieldToCopy = t2.alternateField);  

注意 ) 的位置...这就是 t2 别名不起作用的原因...

否则查询会混淆您的意图。

UPDATE t1
SET t1.firstfieldtocopy = t2.alternatefield
FROM mydatabaseone.mytableone t1
JOIN mydatabasetwo.mytabletwo t2 on t1.firstfieldtocopy = t2.alternate field

虽然我不明白你的逻辑。设置 copy = alternate 但你已经过滤到 copy = alternate 的地方。

问题在于范围界定。 t2 只能在

内访问
(SELECT DISTINCT alternateField FROM myDatabaseTwo.myTableTwo t2)

这意味着当您说 WHERE t1.firstFieldToCopy = t2.alternateField 时,您的 DBMS 不知道您指的是什么。

查询仍然有 2 个问题:

  1. 您的子查询很可能 returns 2+ 值,因为 DISTINCT 不用于 return 单个值,而是用于消除重复值。

  2. 您正在用相同的新值覆盖旧值(参见 Aaron D 的回答)。