我有一个sourcetable,比如:
ColumnA ColumnB ColumnC ...
1 a apple
2 b ball
3 c car
4 a apple
5 p pizza
``` `ColumnB` 以及 `ColumnC` 具有重复的值。
我的代码是:
INSERT INTO TargetTable
SELECT 'Bob', ColumnB, ColumnC, now(), ... FROM SourceTable
WHERE ColumnB = 'a';
我只需要在中输入一个值 `TargetTable` . 结果应该类似于:
Bob a apple currentTime ...
我遇到的问题是每个重复的条目都被输入到 `TargetTable` .
编辑:顺便说一句, `a` 在 `WHERE ColumnB = 'a';` 是动态的。它根据用户交互而改变。
1条答案
按热度按时间osh3o9ms1#
基于理论的回答,不知道驱动db设计的用例
这种情况通常是通过将b列和c列分离到父表中,并在b列和c列上使用唯一键来避免的。然后,使用sourcetable中的外键列引用父表。
对于insert语句,b列和c列将是对父表的引用,在父表中保证有唯一的b列和c列值,从而避免重复条目错误。
看到了吗https://en.wikipedia.org/wiki/database_normalization 关于减少数据冗余,例如sourcetable中的重复列b和c(a,apple)值。
但如果db重新设计不是出于某种原因的选择。。。
您可以使用select distinct