参考主选择表内连接选择表

时间:2013-09-20 15:15:12

标签: sql-server

我有两张包含类似数据的表格。想要找到最接近的比赛用于比较。这就是我想要做的事情:

select a.field1 as a1, b.field1 as b1, a.field2 as a2, b.field2 as b2
from foo a
left join (
   select top 1 tmp.field1, tmp.field2
   from foo2 tmp
   -- The closest match will match the most fields. Add up these.
   order by case when tmp.field1 = a.field1 then 1 else 0 end
          + case when tmp.field2 = a.field2 then 1 else 0 end
          desc) b on 1 = 1

我无法在连接中引用主选择表。

也许我说错了。实际目标是给我一个数据电子表格并告诉他更新数据库。电子表格没有PK,并且缺少数据库所具有的许多字段。此外,数据库遍布外键和子数据。所以我不想删除/插入。相反,我希望比较值并尽可能更新。所以我创建了两个临时表,将数据库记录拉成一个,将电子表格记录拉到另一个表中。现在我想要使用这两个表来更新记录,最后删除/插入没有更新的地方。

1 个答案:

答案 0 :(得分:0)

您是否查看了MERGE声明?它做你想要的,虽然语法有点棘手。

这里有一些不错的例子:

http://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx