2017-01-23 51 views
-2

我有一个Firebird服务器,我需要在此服务器上的表上执行更新。如何在更新中使用select?

我应该更新内部选择回馈的那些行。

我有这样的SQL,并在from(

update szamla_tortenet as s1 
set s1.elso_atadas=1 
FROM(
SELECT CEGKOD,KBIZ_ID,MIN(INS_dATE) 
from SZAMLA_TORTENET AS S2 
GROUP BY CEGKOD,KBIZ_ID 
) as sq 
    where s1.ins_date=sq.ins_date 
+0

而不是使用'update',你可能想看看['merge'(http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-的en/html/fblangref25-dml-merge.html) –

回答

1

运行在错误我认为问题是,在

where s1.ins_date=sq.ins_date 

使用的别名平方米没有找到ins_date作为一个山坳返回由select语句。

update szamla_tortenet as s1 
set s1.elso_atadas=1 
where s1.ins_date=(SELECT MIN(INS_dATE) from SZAMLA_TORTENET 
GROUP BY (CEGKOD,KBIZ_ID); 

此外,如果上述查询失败检查内部查询将返回我敢肯定它会因为它有组多行。

0

试试这个

update szamla_tortenet as s1 
set s1.elso_atadas=1 
FROM(
SELECT CEGKOD,KBIZ_ID,MIN(INS_dATE) as ins_date 
from SZAMLA_TORTENET AS S2 
GROUP BY CEGKOD,KBIZ_ID 
) as sq 
    where s1.ins_date=sq.ins_date