2016-07-13 31 views
0

我想从另一个表中搜索值,如果任何6-7列有不同的值,那么我将它们插入到现有表中并更改标志。在SQL中的顺序搜索

有没有一种更快速搜索的具体方法,还是应该使用顺序搜索?不知道这是如何工作的SQL

例如:

表A

A B C D Flg 
1 2 3 4 N 
2 1 4 3 N 
3 3 2 1 N 
4 4 1 2 N 
5 2 1 2 N 
1 3 3 4 Y --(flg changed because values in column B changed) 

逻辑横穿表中查找当值的变化,然后更新标志,并插入这些值到另一个表。

+0

尝试使用https://msdn.microsoft.com/en-ca/library/ms189788.aspx –

+0

你能解释一下逻辑吗?我看到所有的列都在改变值而不仅仅是column2。 –

+0

在上面的例子中,列A被视为主键(不是字面意思),所以无论何时A列中有重复项,我都会检查列值是否有任何变化,然后将Ch_Flg标记为Y并插入新的在同一个表中记录最新值 –

回答

0

我不确定我关注数据来自哪里或哪个表正在接收它。如果您一次只处理一行,并且需要自行设置insert,那么也许这就是您所需要的。

;with MyData(A, B, C, D) as (
    select * from (values (1, 3, 3, 4)) as v 
) 
insert into Table1 (A, B, C, D, Flg) 
select A, B, C, D, 'Y' 
from MyData as d 
where not exists (
    select 1 from Table2 as t 
    where t.A = d.A and t.B = d.B and t.C = d.C and t.D = d.D 
); 

我有一个预感,可能有一个更干净的方法来做到这一点,而不是你已经安装的任何方法。