检查较大表中的数据与较小的表

时间:2009-09-23 12:14:44

标签: sql sql-server sql-server-2005 tsql stored-procedures

我有两个表,一个有很多记录(表1),另一个表(表2)有相似的数据,但记录少得多。

我需要定期向较大的表中的记录添加标记,其中较小的表中有相应的记录。例如,这可能是一个电子邮件地址。

因此,如果较小的表格(表2)中存在电子邮件地址,请在较大的表格中对此进行标记(表1)

现在,我知道这有点模糊,但实际数据不相关,也不是表/列名称。我正在寻找的是想法/建议,这是最有效的方法。

我是否运行过程......

A)检查一个表中的记录,然后在另一个表中查找相应的记录?然后标记此记录是否匹配。哪种方式最好?

B)用临时表做点什么吗?

c)一些完全不同的东西?请指点。

我希望这是有道理的,我希望你能提供帮助。

谢谢!

4 个答案:

答案 0 :(得分:6)

在电子邮件地址的两个表之间进行包含INNER JOIN的UPDATE。

答案 1 :(得分:2)

粗略地说,做这样的事情:

Update LargeTable
Set Marker = 1
From LargeTable l
inner join SmallTable s
on s.ID = l.ID
Where s.SomeField = 'Criteria'

答案 2 :(得分:1)

由于您使用的是SQL 2005,因此无法使用MERGE命令。您必须使用INSERT和UPDATE语句来执行此操作。

编写SQL后,您可以创建一个定期执行此语句并安排它的SQL作业。

以下是如何安排工作:http://msdn.microsoft.com/en-us/library/ms190268.aspx

答案 3 :(得分:1)

为什么不创建一个触发器,当在第二个表中放入,删除或更改记录时,该触发器将自动更新第一个表。或者更好的是,当你想知道这些信息而不是denormailzing存储在第一个时,为什么不加入第二个表呢?