我有两张主表
如果position
中的行与geography
中的行相交,我需要将其插入第三个表格。
但问题是我必须检查第三个表中的现有行然后插入它。
我可以通过set操作执行此操作,但问题是我无法处理每一行(即,如果有两行具有相似的数据,则只需要插入第一行)。
我可以使用光标,但我读到了一件坏事。
在插入之前,有人可以帮我处理每一行吗?
答案 0 :(得分:3)
首先在CTE中使用ROW_NUMBER只需要为每个ID获取1行。然后是MERGE:
;WITH cte AS (
SELECT g.*,
ROW_NUMBER() OVER (PARTTION BY SomeColumn ORDER BY SomeColumn) as rn
FROM Postion p
INNER JOIN geography g
ON p.someID = g.SomeID
)
MERGE ThirdTable as target
USING (SELECT * FROM cte WHERE rn = 1) as source
ON target.SomeID = source.SomeID
WHEN NOT MATCHED THEN
INSERT (target fields)
VALUES (source values);
答案 1 :(得分:0)
// #temp包含位置和地理位置相交的所有必填字段,并使用左连接检查第三个表
find