2016-12-15 8 views
0

1つのクエリで複数の行を更新するにはどうすればよいですか?1つのクエリで複数行を更新するにはどうすればよいですか?

update POL_VYMFOND set fk_vsoub='2245' 
where fk_vsoub in (select HL_VYMSOUB.ID_VSOUB 
from POL_VYMSEZN 
inner join HL_VYMSEZN 
    on HL_VYMSEZN.ID_VSEZN=POL_VYMSEZN.FK_VSEZN 
inner join HL_VYMSOUB 
    on HL_VYMSOUB.FK_VSEZN=HL_VYMSEZN.ID_VSEZN 
where POL_VYMSEZN.FK_BUDOVA='4') 

間違いなく間違っている:

私はこのような何かを持っています。

これは可能ですか?

別のテーブルの値に従ってあるテーブルの列値を変更したいと思います。

ありがとうございました

+2

他の列 'update POL_VYMFOND set fk_vsoub = '2245'、other_column = 42、third_column = 'foobar'を...を追加してください。 –

+1

あなたの問題がより具体的であるようにしてください。複数の列を更新するには、[更新の基本的な構文](http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-dml-update.html)を知らなかったか(コメントa_horseによって)、またはあなたは別の問題を抱えていますか?もしそうなら、その問題は何ですか? –

+0

私は1つの列(より多くの細胞)を更新する必要があります。 HL_VYMSEZN.ID_VSEZN = POL_VYMSEZN.FK_VSEZN内のHL_VYMSEZNの内部結合HL_VYMSOUB.FK_VSEZN = HL_VYMSEZN.ID_VSEZNの内部結合HL_VYMSOUBここで、POL_VYMSEZN.FK_BUDOVA = '4''という値を取得します。 ID 2456 1458 1454 448'と私はこの値を2245 – preclix

答えて

1

将来の開発者のための一般的な回答です。

SQL Serverの

UPDATE 
    t1 
SET 
    t1.column = t2.column 
FROM 
    Table1 t1 
    INNER JOIN Table2 t2 
    ON t1.id = t2.id; 

オラクル(およびSQL Server)

UPDATE 
    Table1 t1, 
    Table2 t2 
SET 
    t1.column = t2.column 
WHERE 
    t1.ID = t2.ID; 

Firebirdの

UPDATE 
    t1 
SET 
    t1.colmun = t2.column 
FROM 
    Table1 t1, 
    Table2 t2 
WHERE 
    t1.ID = t2.ID; 

のMySQL 2.1

UPDATE dest_table t1 
SET 
field1 = (select field1 from src_table t2 where t2.pk = t1.pk), 
field2 = (select field2 from src_table t2 where t2.pk = t1.pk) 
WHERE EXISTS (select 1 from src_table t2 where t2.pk = t1.pk) 

他のバージョンのFirebirdの場合は、check this link

をお寄せください。これにより、問題が解決します。

+0

質問はFirebirdについてです。 Oracle用ではなく、SQL用ではなく、MySQL用ではありません(プラス:2番目のUPDATE文は** Oracleでは有効ではありません) –

+0

質問にはSQLカテゴリもあります。 – Mehmood

+0

はい、それは標準SQLを指し、特定のDBMS製品ではありません。また、UPDATE文の標準SQLにはFROMはありません –

関連する問題