表:tbl1
改變重複的場
領域:id
,name
id name
1 a 1 a 1 a 1 b
我喜歡一直重複姓名和身份證(ID = 1的地方,NAME = ||一個ID = 1,name = a || id = 1,name = a)。
更改爲
id = 1,name = a1 || id = 1,name = a2 || ID = 1,名稱= A3
通過LINQ的& & SqlServer的
表:tbl1
改變重複的場
領域:id
,name
id name
1 a 1 a 1 a 1 b
我喜歡一直重複姓名和身份證(ID = 1的地方,NAME = ||一個ID = 1,name = a || id = 1,name = a)。
更改爲
id = 1,name = a1 || id = 1,name = a2 || ID = 1,名稱= A3
通過LINQ的& & SqlServer的
注意,這是在解釋這個問題的意思我最好的嘗試。請回應,如果我離開基地:)我已經提出了使用一次性SQL查詢更新輸出的解決方案,因爲這對於LINQ解決方案可能有點太複雜。
這是一個查詢,它將生成一個id和名稱的表,其中名稱附加索引值,只要id和名稱相同。它通過生成一個行號和計數相同的值來工作。如果相同值的計數大於1,則行號用於生成追加到名稱的索引。請注意,這不能修改現有的表,因爲當沒有唯一標識符時,以這種方式更新記錄是不可能的。你將不得不輸出到這個新表並使用它:
;with T as (
select
row_number() over (order by id, name) as idx,
id,
name,
(select count(*) from [tbl1] b where b.id=a.id and b.name=a.name) as count
from
[tbl1] a
)
select
id,
case when
count > 1 then
name +
cast(
(select count(*) from T b where b.id=T.id and b.name=T.name
and b.idx<T.idx) + 1
as varchar(50))
else
name
end
from
T
與此查詢,如果TBL1包含以下輸入:
1 a
1 a
1 a
1 b
2 a
2 a
2 b
2 b
2 b
2 c
2 c
2 d
1 e
會生成以下的輸出:
1 a1
1 a2
1 a3
1 b
1 e
2 a1
2 a2
2 b1
2 b2
2 b3
2 c1
2 c2
2 d
請讓我知道如果這沒有回答你的問題。希望這可以幫助!
是的,這是一個很好的,但如何通過linq – sdFRRR
如果你使用linq,你可以運行一個SQL查詢就好了。 myContext.ExecuteQuery(「SQL HERE」)。我認爲使用SQL是一個更簡單的解決方案,除非你有充分的理由使用LINQ。 (http://msdn.microsoft.com/en-us/library/bb399403.aspx) – mellamokb
如何查看重複次數 – ashkufaraz
就目前來看,這不是一個真正的問題。你有什麼嘗試? – JNK