MSSQL如何合并单个表中的行

时间:2016-02-03 08:45:29

标签: c# sql-server entity-framework linq merge

在编程方面,我真的是个新手。我一直在使用用C#MVC5编写的Web应用程序。我正在使用MSSQL作为我的数据库和一些编程模型,如Linq和Entity Framework。

我现在需要处理的是单个表中具有相同内容的合并行。

例如,

我有以下表格,其中包含以下列:

contact_type

[socialId][socialName][webUrlTemplate]
rated_merge
[mergeId][timestamp][ratedId]

评分*

[ratedId][fname][lname][mergeId][ratings]
表** rated_contact
[id][ratedId][socialId][value]

我有一个表单,其中用户可以输入他们的社交网络/交友网站用户名/ ID,在其中提交,表单的内容将保存到表评级 rated_contact。

在提交表单后,它会首先检查表单是否在评级 rated_contact 表中具有匹配的记录。 如果没有匹配的记录,表单内容将保存为新记录。

但是如果有匹配,这就是合并的地方 (仅当系统检测到来自from的用户名与数据库中的任何用户名匹配时才会发生匹配)。将比较匹配的行,将创建包含所比较的行的所有差异和匹配的新记录。然后,之前的记录将被标记为已删除。此新记录将完成评级人员的个人资料。

创建合并后,表 rated_contact 中的[ratedId]列将从新创建的合并记录更新为[ratedId]。然后使用 rated_merge 表,我需要插入一个包含[timestamp],[ratedId]和[mergeId]的新记录,这是一个自动增量字段。

我需要获取[mergeId]并更新所有匹配记录的评级表中的[mergeId]列。

我应该采取什么方法的建议?

谢谢你们。

2 个答案:

答案 0 :(得分:-1)

您可以使用此查询

select fullname,max(facebook_id) facebook_id,max(twitter_id)twitter_id,max(insta_id)insta_id from member group by fullname

答案 1 :(得分:-1)

insert into table_to_insert 
([fullname],[facebook_id],[twitter_id],[insta_id])
select [fullname],isnull(t1.[facebook_id],t2.[facebook_id]),isnull(t1.[twitter_id],t2.[twitter_id]),isnull(t1.[insta_id],t2.[insta_id])
from tablesource1 t1
inner join
tablesource2 t2
on t1.fullname=t2.fullanme

也许它会帮助你