如何使用内部联接更新

问题描述:

如何执行内部联接,因为我想从名为Medication的另一个表中检索信息,其中使用属性Description而不是Location描述。我如何去做这件事?如何使用内部联接更新

public static void UpdateLocationDescription(int locationID, string description, SqlConnection connection, SqlTransaction transaction) 
    { 
     StringBuilder sqlString = new StringBuilder(); 
     SqlCommand command; 

     sqlString.Append("UPDATE [Location] SET "); 
     sqlString.Append("description = @description "); 
     sqlString.Append("WHERE locationID = @locationID "); 
     command = new SqlCommand(sqlString.ToString(), connection); 
     if((transaction != null)) command.Transaction = transaction; 

     command.Parameters.Add("@locationID", SqlDbType.Int).Value = locationID; 
     command.Parameters.Add("@description", SqlDbType.VarChar).Value = description; 


     int rowsAffected = command.ExecuteNonQuery(); 

     if(!(rowsAffected == 1)) 
     { 
      throw new Exception("An error has occurred while updating UpdateMedicationDispenseStatus."); 
     } 
    } 
+0

也许会想不同的查询。更新不应该什么返还给您。 – Jonesopolis

+0

你想要做的更新,然后获取数据吗?或者您想更新从药物表中的描述? – unlimit

+0

是你在看UNION吗?是表格相关的吗? –

使用“FROM”关键字可以做到这一点。

UPDATE [Medication] 

SET [Medication].description = @description 

FROM [Medication] INNER JOIN [Location] ON [Medication].LocationID = [Location].LocationID 

WHERE ... 

Ofcouse我不知道你的结构或要求。但是,你只是把它写成SELECT语句的INNER JOIN。您可以使用您想要考虑的字段编写SELECT语句。然后,只需更换 “SELECT [田]” 与“UPDATE [tableyouwantochange]中的[现场] = [值]

检索数据部分只使用一个新的SELECT语句。

+0

我想更新另一张表的描述 – Mark

不要ü的意思是这样的吗?

UPDATE [Location] 

SET [Location].description = (SELECT top 1* m.description FROM Medication m WHERE m.LocationID [email protected]) 

WHERE Location.ID [email protected]