Firebird SQL中的跨表更新

Firebird SQL中的跨表更新,sql,firebird,Sql,Firebird,也许有人知道怎么做。在MySQL中,我将执行以下操作: UPDATE T1 SET T1.c2 = T2.c2 WHERE T1.c1 = T2.c1 不幸的是,在Firebird中尝试此操作时会导致错误,并产生以下响应: SQL Message : -204 Undefined name Engine Code : 335544569 Engine Message : Dynamic SQL Error SQL error code = -204 Table unknown T1

也许有人知道怎么做。在MySQL中,我将执行以下操作:

UPDATE T1
SET T1.c2 = T2.c2
WHERE T1.c1 = T2.c1 
不幸的是,在Firebird中尝试此操作时会导致错误,并产生以下响应:

SQL Message : -204
Undefined name

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -204
Table unknown
T1
At line 2, column 1
有人有主意吗?

在访问这两个表之前,您需要提及这两个表

尝试:

或者

update t1
  inner join t2
    on t1.c1 = t2.c1
  set t1.c2 = t2.c2
编辑

显然firebird不支持在更新中加入,因此请尝试:

update t1
  set t1.c2 = (select c2 from t2 where c1 = t1.c1);
在访问这两个表之前,您需要提及这两个表

尝试:

或者

update t1
  inner join t2
    on t1.c1 = t2.c1
  set t1.c2 = t2.c2
编辑

显然firebird不支持在更新中加入,因此请尝试:

update t1
  set t1.c2 = (select c2 from t2 where c1 = t1.c1);
在访问这两个表之前,您需要提及这两个表

尝试:

或者

update t1
  inner join t2
    on t1.c1 = t2.c1
  set t1.c2 = t2.c2
编辑

显然firebird不支持在更新中加入,因此请尝试:

update t1
  set t1.c2 = (select c2 from t2 where c1 = t1.c1);
在访问这两个表之前,您需要提及这两个表

尝试:

或者

update t1
  inner join t2
    on t1.c1 = t2.c1
  set t1.c2 = t2.c2
编辑

显然firebird不支持在更新中加入,因此请尝试:

update t1
  set t1.c2 = (select c2 from t2 where c1 = t1.c1);
Firebird语句只能引用单个表。要想做你想做的事,你有两个选择

使用相关子查询:

UPDATE T1
SET c2 = (SELECT T2.c2 FROM T2 WHERE T2.c1 = T1.c1)
或使用:

Firebird语句只能引用单个表。要想做你想做的事,你有两个选择

使用相关子查询:

UPDATE T1
SET c2 = (SELECT T2.c2 FROM T2 WHERE T2.c1 = T1.c1)
或使用:

Firebird语句只能引用单个表。要想做你想做的事,你有两个选择

使用相关子查询:

UPDATE T1
SET c2 = (SELECT T2.c2 FROM T2 WHERE T2.c1 = T1.c1)
或使用:

Firebird语句只能引用单个表。要想做你想做的事,你有两个选择

使用相关子查询:

UPDATE T1
SET c2 = (SELECT T2.c2 FROM T2 WHERE T2.c1 = T1.c1)
或使用:



这在mysql中不起作用。这在mysql中不起作用。这在mysql中不起作用。这在Firebird中不起作用。update语句本身只能引用一个表(或可更新视图)。@markrotVeel这很不方便,但它是SQL标准中定义的唯一更新;对于更复杂的应用程序,有
MERGE
(参见我的答案)。是的,我看到了。直到15分钟前我才听说firebird;)这在Firebird中不起作用,update语句本身只能引用一个表(或可更新视图)。@MarkrotVeel这是Tagreed,但它是SQL标准中定义的唯一更新;对于更复杂的应用程序,有
MERGE
(参见我的答案)。是的,我看到了。直到15分钟前我才听说firebird;)这在Firebird中不起作用,update语句本身只能引用一个表(或可更新视图)。@MarkrotVeel这是Tagreed,但它是SQL标准中定义的唯一更新;对于更复杂的应用程序,有
MERGE
(参见我的答案)。是的,我看到了。直到15分钟前我才听说firebird;)这在Firebird中不起作用,update语句本身只能引用一个表(或可更新视图)。@MarkrotVeel这是Tagreed,但它是SQL标准中定义的唯一更新;对于更复杂的应用程序,有
MERGE
(参见我的答案)。是的,我看到了。直到15分钟前我才听说firebird;)