![](/img/trans.png)
[英]How can I update some columns table2 from table1 automatically after insert any row in table1 (SQL Server)?
[英]How do I update TABLE1 with values from TABLE2 without setting columns from TABLE1 to specific, individual select statements?
如果這些值存在,我想用另一個表中的值更新一個表。 我在Spring中使用RunSqlTasklet
來運行此SQL,但實際上將使用postgres,而我的版本無法處理合並,因此請沒有合並答案。
例:
下面的方法有效,但是反復進行各個特定的列選擇部分似乎可以改進。
UPDATE schema.TABLE1 t1
SET COLUMN1 = (SELECT t2.COLUMN1 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
,COLUMN2 = (SELECT t2.COLUMN2 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
,COLUMN3 = (SELECT t2.COLUMN3 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
WHERE EXISTS (
SELECT 1 FROM schema.TABLE2 t2
WHERE t1.COLUMN4 = t2.COLUMN4
AND t1.COLUMN5 = t2.COLUMN5
);
如何在不將TABLE1中的列設置為上述特定的,單獨的select語句的情況下更新上述查詢以使用TABLE2中的值更新TABLE1?
我已經用Google搜索過了,上面的內容似乎是唯一可行的方法,但是我不這么認為。
您可以使用update-join語法。 基本上,您只需要添加一個帶有table2的from
子句,以及一個帶有連接條件(當然,以及您可能想要的任何其他條件)的where
子句:
UPDATE schema.TABLE1 t1
SET t1.COLUMN1 = t2.COLUMN1,
t1.COLUMN2 = t2.COLUMN2,
t1.COLUMN3 = t2.COLUMN3
FROM schema.TABLE2 t2
WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5
你也可以這樣做
--Select *
Update T1
SET t1.COLUMN1 = t2.COLUMN1,
t1.COLUMN2 = t2.COLUMN2,
t1.COLUMN3 = t2.COLUMN3
from schema.Table1 T1 Inner JOIN
schema.Table2 T2
on T1.Column4 =T2.Column4 and t1.COLUMN5 = t2.COLUMN5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.