sql-使用列表dapper中的不同值更新列中的多个行

时间:2017-05-09 09:09:25

标签: sql-server dapper

我有一个ProjectTable和一个ProjectMaterial映射表。每个项目都可以有多种不同的材料。

离;

 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
       ......

你意识到我从列表中更新了projectId 4118,其中包含c,D值... 我收到用户在View上更新的值的列表,我需要使用dapper进行此sql查询以更新数据库。

提前致谢。

1 个答案:

答案 0 :(得分: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