我们有一个如下的主表:
tbl_PMSMaster:
<style type="text/css">
table.tableizer-table {
border: 1px solid #CCC; font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.tableizer-table td {
padding: 4px;
margin: 3px;
border: 1px solid #ccc;
}
.tableizer-table th {
background-color: #104E8B;
color: #FFF;
font-weight: bold;
}
</style><table class="tableizer-table">
<tr class="tableizer-firstrow"><th>SrNo</th><th>CLSID</th><th>Table_Name</th><th>EvaluatorName</th></tr>
<tr><td>1</td><td>1234567891</td><td>tbl_InboundMonitoring</td><td>NULL</td></tr>
<tr><td>2</td><td>9820247015</td><td>tbl_FOCaseEval</td><td>NULL</td></tr>
<tr><td>3</td><td>4567890</td><td>tbl_InboundMonitoring</td><td>NULL</td></tr>
<tr><td>4</td><td>1111111</td><td>tbl_RetentionEvaluation</td><td>NULL</td></tr>
</table>
和不同的表如tbl_InboundMonitoring, tbl_FOCaseEval, tbl_RetentionEvaluation等。所有这些表都有列CLSID和EvaluatorName,它们在数据输入时被填充。
需要更新tbl_PMSMaster中只有CLSID列填充的列EvaluatorName
如何使用join或其他东西更新这两个表和sys.tables?
试试这个:
UPDATE tbl_PMSMaster p SET p.EvaluatorName = i.EvaluatorName
INNER JOIN tbl_InboundMonitoring i ON i.CLSID = p.CLSID
在这种情况下我只使用了tbl_InboundMonitoring
,但是您可以用您提到的任何其他表替换它,或者以相同的方式连接其他表。
DECLARE @Query VARCHAR(MAX)
DECLARE @TableToUpdate VARCHAR
DECLARE @TableFrom VARCHAR
SET @TableToUpdate = 'tbl_PMSMaster'
SET @TableFrom = 'tbl_InboundMonitoring'
SET @Query = 'UPDATE ' + @TableToUpdate + ' p SET p.EvaluatorName = i.EvaluatorName
INNER JOIN '+ @TableFrom +' i ON i.CLSID = p.CLSID'
EXEC(@Query)