2017-01-23 22 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 
相關問題