我已经有了一个表中的一行:匹配一个表的每一行与另一个表
TABLE_A
-----------
Sc Cl Pr Br
-----------
1 1 1 NULL
2 1 1 NULL
1 2 2 NULL
2 2 2 NULL
(SC,氯,PR)是候选键
为了赋值字段Br(认为这是理所当然的,它不能改变)我将这些行插入到带有Br字段的3个字段(Br,Cl,Pr)的TABLE_B中,字段Br自动递增(为了使事情更简单,假设TABLE_B为空,TABLE_A仅包含上述行)。所以我做这样的事情
INSERT INTO TABLE_B (Cl, Pr) SELECT Cl, Pr FROM TABLE_A
现在我要指派自动生成TABLE_B.Br到TABLE_A.Br以这样的方式
TABLE_B.Cl = TABLE_A.Cl AND TABLE_B.Pr = TABLE_A.Pr
和TABLE_A T1的每两行,T2是
t1.Cl = t2.Cl AND t1.Pr = t2.Pr AND t1.Sc <> t2.Sc => t1.Br <> t2.Br
PS 1:我希望这不是太混乱:(
PS 2:我找到的唯一快速简单的解决方案是在TABLE_B(Sc)中添加一个字段,然后表之间的简单连接就可以完成这项工作。但添加一列不是一个选项。
这可能是太混乱...也许这将有助于看到什么生成的表格数据一旦完成就会生成? – ShaneBlake 2011-04-29 21:17:24
您使用的是哪个版本的SQL-Server? – 2011-04-29 22:12:38
看看这里。 http://stackoverflow.com/questions/5830229/copy-each-identity-of-inserted-records/5831028#5831028。另一个人问几乎同样的问题。我真的很想知道为什么这些表的设计是这样的。根本没有任何意义。 – 2011-04-29 22:17:50