我有四张桌子。 R(r_key,r_id) T(t_key,t_id) RT(r_key,t_key,isA,_co,_cb) 和 RT_Imp(r_id,t_id,isA,_co,_cb)。
我需要将数据从RT_Imp复制到RT。我只需要为R中已存在的r_id复制数据。如果R中没有r_id,则不应复制它的数据。
复制时我需要从R和T获取r_key和t_key,分别与r_id和t_id匹配。
我试过了
INSERT INTO RT
SELECT R.R_key, T.T_key, RT_Imp.isA, RT_Imp._co, RT_Imp._cb
FROM R, T, RT_Imp
WHERE EXISTS
(
SELECT *
FROM R, T, RT_Imp
WHERE R.R_id = RT_Imp.R_id
and T.T_id = RT_Imp.T_id
and RT_Imp.R_id = R.R_id
)
但它给了我所有的行重复。 执行此操作应该是我的查询?
答案 0 :(得分:0)
INSERT INTO rt
SELECT
rkey.r_key,
tkey.t_key,
new.isA,
new._co,
new._cb
FROM @RT_Imp new
INNER JOIN @R rkey
ON rkey.r_id = new.r_id
INNER JOIN @T tkey
ON tkey.t_id = new.t_id
LEFT JOIN @RT old
ON old.r_key = rkey.r_key
WHERE old.r_key IS NULL
加入所有表,这将插入基于r_key在rt中找不到的所有rt_imp记录。在更新之前,您应首先使用select语句查看所有数据。