我可以使用SQL将数据提取到两个现有表中的任何重复的新表中吗?
下表是我访问之前从ERP系统拍摄的快照。
PRE
CO Otp Los His Whs Fac
11889204 C20 22 66 1BA 1BA
11889132 C23 22 66 1BA 1BA
11888835 C20 23 66 1BA 1BA
11887689 C20 22 66 1BA 1BA
11884977 C20 22 22 1BA 1BA
11884624 C20 22 99 1BA 1BA
下表是我访问后拍摄的快照。
POST
CO Otp Los His Whs Fac
11889204 C20 22 66 1BA 1BA
11889132 C23 22 66 1BA 1BA
11888835 C20 23 66 1BA 1BA
11882804 C20 22 77 1BA 1BA
11882724 C20 22 77 1BA 1BA
11882521 C20 22 77 1BA 1BA
11882431 C20 22 22 1BA 1BA
11881410 C20 22 22 1BA 1BA
11881282 C20 22 22 1BA 1BA
现在我想要的是POST访问表以仅显示新记录,而SQL则删除在PRE和POST表中重复的任何记录并创建新表并将重复项粘贴到那里。
现在我正在学习SQL,但这稍微超出了我的深度。任何人都知道这是否可能?
答案 0 :(得分:2)
这会将PRE和POST表中的匹配行插入newtable
:
INSERT INTO newtable (POSTCO,Otp, Los, His, Whs, Fac)
SELECT POSTCO,Otp, Los, His, Whs, Fac FROM posttable
WHERE EXISTS
(SELECT POSTCO,Otp, Los, His, Whs, Fac FROM pretable
WHERE POSTCO = posttable.POSTCO AND Otp = posttable.Opt AND
Los = posttable.Los AND His = posttable.His AND
Whs = posttable.Whs AND Fac = posttable.Fac)
然后删除重复的行:
DELETE FROM posttable WHERE EXISTS
(SELECT POSTCO,Otp, Los, His, Whs, Fac
FROM pretable
WHERE POSTCO = posttable.POSTCO AND Otp = posttable.Opt
AND Los = posttable.Los AND His = posttable.His
AND Whs = posttable.Whs AND Fac = posttable.Fac)