Sql server sql使用不同于列表的值更新列中的多行

Sql server sql使用不同于列表的值更新列中的多行,sql-server,dapper,Sql Server,Dapper,我有一个ProjectTable和一个ProjectMaterial映射表。每个项目可以有多个与之关联的不同材质 前 如何从值列表中更新一个特定项目中的所有MaterialCode? 我希望结果应该是这样的: ProjectmaterialId ProjectId MaterialCode 1 4118 c 2 2135 B 3 4118

我有一个ProjectTable和一个ProjectMaterial映射表。每个项目可以有多个与之关联的不同材质

如何从值列表中更新一个特定项目中的所有MaterialCode? 我希望结果应该是这样的:

ProjectmaterialId   ProjectId   MaterialCode
      1                 4118      c
      2                 2135      B
      3                 4118      D
       ......
正如您所意识到的,我从一个包含c,D值的列表中更新了projectId 4118。。。 我正在从用户在视图上更新的内容接收值列表,我需要进行此sql查询以使用dapper更新数据库

提前谢谢。

我希望它能帮助你

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 

谢谢你的回答。你能解释一下吗,因为我对sql非常陌生,我不太明白你想做什么。谢谢。我认为您想用ProjectMaterialCode表MaterialCode列更新ProjectTable MaterialCode列。另外,我从中获取值的列表是从几个表中一起获取的字符串列表,我正在将其填充到dapper中项目类的属性中。。。我想根据Project.Sources的值更新数据库,这是一个字符串列表…不,我想根据用户在前端为特定项目更新的值更新ProjectMaterial表。我得到一份材料清单。
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