无法分配第二个 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 个问题:
您的子查询很可能 returns 2+ 值,因为 DISTINCT
不用于 return 单个值,而是用于消除重复值。
您正在用相同的新值覆盖旧值(参见 Aaron D 的回答)。
我很难让我的第二个别名在下面的示例中工作。 我正在使用松鼠 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 个问题:
您的子查询很可能 returns 2+ 值,因为
DISTINCT
不用于 return 单个值,而是用于消除重复值。您正在用相同的新值覆盖旧值(参见 Aaron D 的回答)。