![](/img/trans.png)
[英]How do i limit in sql, that if one table row is selected, only corresponding items from another table show?
[英]How to add only new row from one table to another table in sql
我在連接到hana數據庫的SQL Server中使用鏈接服務器。 我想從hana數據庫中導入一張表並將其復制到sql中。 我已經完成了導入部分。 現在的問題是,我想進行查詢,以選擇唯一的行或在不存在或不存在的sql中僅插入行。 但是我的查詢給出了主鍵沖突錯誤,這意味着它再次插入了所有數據。 這是我的查詢:
insert into OACT ( AcctCode,AcctName,CurrTotal,FatherNum,SysTotal,CreateDate,UpdateDate,ActId,FormatCode)
select tab2.AcctCode,tab2.AcctName,tab2.CurrTotal, tab2.FatherNum,tab2.SysTotal,tab2.CreateDate,tab2.UpdateDate,tab2.ActId,tab2.FormatCode
from HanaSql8.."TRAININGDB"."OACT" tab2
Where NOT EXISTS (
Select tab1.AcctCode,tab1.AcctName,tab1.CurrTotal, tab1.FatherNum,tab1.SysTotal,tab1.CreateDate,tab1.UpdateDate,tab1.ActId,tab1.FormatCode
from OACT tab1
where tab1.AcctCode=tab2.AcctCode
);
如果目標表上的主鍵在AcctCode列上定義,您的代碼應該可以正常工作
在EXISTS()或NOT EXISTS()中,您不必使用列名進行選擇,它只是一種邏輯檢查,因此您可以進行如下修改
insert into OACT (
AcctCode,AcctName,CurrTotal,
FatherNum,SysTotal,CreateDate
,UpdateDate,ActId,FormatCode
)
select
tab2.AcctCode,tab2.AcctName,tab2.CurrTotal,
tab2.FatherNum,tab2.SysTotal,tab2.CreateDate,
tab2.UpdateDate,tab2.ActId,tab2.FormatCode
from HanaSql8.."TRAININGDB"."OACT" tab2
Where NOT EXISTS (
Select *
from OACT tab1
where tab1.AcctCode=tab2.AcctCode
);
我們可以測試LEFT JOIN子句作為NOT EXISTS()的替代方法
這是查詢
insert into OACT (
AcctCode,AcctName
)
select
tab2.AcctCode,tab2.AcctName
from HanaSql8.."TRAININGDB"."OACT" tab2
left join OACT tab1
on tab1.AcctCode=tab2.AcctCode
where tab1.AcctCode is null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.