Firebird SQL中的跨表更新
也许有人知道怎么做。在MySQL中,我将执行以下操作: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
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;)