2016-12-15 60 views
0

如何在一個查詢中更新多行?如何在一個查詢中更新多行?

我有這樣的事情:

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

我需要更新一列(更多單元格)。有了這個選擇:從POL_VYMSEZN內'選擇HL_VYMSOUB.ID_VSOUB加入上HL_VYMSEZN.ID_VSEZN = POL_VYMSEZN.FK_VSEZN內部聯接HL_VYMSOUB HL_VYMSEZN上HL_VYMSOUB.FK_VSEZN = HL_VYMSEZN.ID_VSEZN其中POL_VYMSEZN.FK_BUDOVA ='4''我得到例如幾個值:' ID 2456 1458 1454 448'和每一個這個值我想改成2245 – preclix

回答

1

未來開發者的通用答案。

SQL服務器

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

甲骨文(和SQL Server)

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

MySQL的

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

火鳥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) 

對於其他版本的火鳥請check this link

希望這會幫助你,並會解決你的問題。

+0

問題是關於Firebird。不適用於Oracle,不適用於SQL,不適用於MySQL(另外:第二條UPDATE語句對於Oracle不是**有效) –

+0

此問題也有SQL類別。 – Mehmood

+0

是的,這是指標準的SQL - 不是特定的DBMS產品。並且在UPDATE語句 –