连接3个表,包括sys.Tables为表名



我们有一个如下的主表:

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)

最新更新