【发布时间】:2011-08-15 19:01:02
【问题描述】:
我有一张桌子:
TABLE_A
-----------
Sc Cl Pr Br
-----------
1 1 1 NULL
2 1 1 NULL
1 2 2 NULL
2 2 2 NULL
(Sc, Cl, Pr) 是候选键
为了将值分配给字段 Br(认为这是理所当然的,它不能更改)我将这些行插入到一个 TABLE_B 中,其中包含 3 个字段(Br、Cl、Pr),字段 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 的 AND
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) 中添加一个字段,然后在表之间进行简单的连接就可以完成这项工作。但添加列不是一种选择。
【问题讨论】:
-
这可能太混乱了......也许它会有助于查看完成后生成的表数据是什么?
-
您使用哪个版本的 SQL-Server?
-
看看这里。 stackoverflow.com/questions/5830229/…。另一个人问了几乎相同的问题。我真的很想知道为什么这些桌子的设计是这样的。根本没有任何意义。
-
@Mikael:谢谢。它闻起来像家庭作业。对于一个狡猾的老师教的科目。
-
@ypercube,不幸的是,这不是功课,而是真实情况,是以前糟糕的设计和拒绝更改数据库架构的结果。这只是尽可能精确地指定实际问题的抽象版本。
标签: sql sql-server