2017-05-09 126 views
0

我有一個ProjectTable和一個ProjectMaterial映射表。每個項目可以有多個與其相關的不同材料。sql-update使用列表中的不同值更新列中的多個行dapper

ex;

ProjectmaterialId ProjectId MaterialCode 
     1     4118  A 
     2     2135  B 
     3     4118  B 
     ...... 

如何從一個值列表更新一個特定項目的所有MaterialCode? 我想要的結果應該是這樣的:

ProjectmaterialId ProjectId MaterialCode 
     1     4118  c 
     2     2135  B 
     3     4118  D 
     ...... 

你意識到我從在它有C,d值的列表更新專案編號4118 ... 我收到值從用戶什麼列表在View上更新,我需要使用這個sql查詢來使用dapper更新數據庫。

在此先感謝。

回答

0

我希望它能幫助你

DECLARE @ProjectTable TABLE(ProjectmaterialId INT , ProjectId INT, MaterialCode VARCHAR(2)) 

INSERT INTO @ProjectTable 

SELECT 1, 4118,  'A' union all 
SELECT 2, 2135,  'B' union all 
SELECT 3, 4118,  'B' 

DECLARE @ProjectMaterial TABLE(ProjectmaterialId INT , ProjectId INT, MaterialCode VARCHAR(2)) 

INSERT INTO @ProjectMaterial 

SELECT 1, 4118 , 'C' union all 
SELECT 2, 2135 , 'B' union all 
SELECT 3, 4118 , 'D' 

SELECT * from @ProjectTable 
SELECT * from @ProjectMaterial 

UPDATE A 
SET MaterialCode=B.MaterialCode 
FROM @ProjectTable A 
INNER JOIN @ProjectTable B 
ON A.ProjectmaterialId=B.ProjectmaterialId 

SELECT * FROM @ProjectMaterial 
+0

謝謝回答。你能解釋一點,因爲我對sql很陌生,而且我不太明白你想做什麼。謝謝。 – BYG

+0

我想要更新ProjectMaterial表的MaterialTable MaterialCode列MaterialCode列 – 2017-05-09 09:51:13

+0

此外,我從哪裏取值的列表是從幾個表中取得的字符串列表,我將它填充到屬性中在Dapper中的Project類...我想根據Project.Sources的值來更新數據庫,這是一個字符串列表... – BYG

相關問題