连接3个表,包括表名的sys.tables

时间:2015-08-21 09:27:55

标签: sql sql-server sql-server-2008 join

我们有一个主表如下:

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,这些列在数据输入时填充。

需要更新仅填充CLSID列的tbl_PMSMaster中的Column EvaluatorName。

如何使用连接或使用这两个表和sys.tables进行更新?

1 个答案:

答案 0 :(得分:0)

试试这个:

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)
相关问题