我有一个表,有重复的电子邮件地址,我只需要将其中一个插入到临时一个临时表连同其他两个字段。这里有很多例子,但我可以让它们中的任何一个工作,
我最终搜索了MERGE,得到了同样的结果。所有的唱片都被插入了--我迷路了。我尝试了许多不同的样本,但它总是插入所有记录。我回去确认电子邮件地址是不是真的是假的,他们是..下面是我现在所处的位置..
MERGE #EmailTable2 AS Target
USING (SELECT EMAIL, NAME, JOB_TITLE FROM b2b_cmas_list$ WHERE EMAIL IS NOT NULL) AS Source
ON (Target.EMAIL = Source.EMAIL)
WHEN NOT MATCHED BY TARGET THEN
INSERT (EMAIL, NAME, JOB_TITLE)
VALUES (Source.EMAIL, Source.NAME, Source.JOB_TITLE)
OUTPUT $action, inserted.*, deleted.*;因此,任何帮助正确解决此问题的方法都将是有帮助的。
发布于 2012-06-29 03:41:34
这是不起作用的,因为SQL不知道您要选择包含相同电子邮件的两行中的哪一行。我的意思是:如果电子邮件是相同的,哪一对(名称和JOB_TITLE)是重要的,哪一对可以被丢弃?
一些提示:
通过电子邮件从b2b_cmas_list$组中选择电子邮件、最大(名称)、最大(JOB_TITLE)
但是要注意,这可能会损坏名称-作业_标题对(因为选择了最大值)。
还有一点关于MERGE语句的注意事项。这并不像预期的那样工作,因为SQL一次检查所有行,而不是逐行检查。所以不是说如果一封电子邮件。即。"a@a.com“被插入,然后另一个不会被插入。只有当"a@a.com”在语句开头的表中时才有关系。
https://stackoverflow.com/questions/11251581
复制相似问题