如何使用内部联接更新
问题描述:
如何执行内部联接,因为我想从名为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.");
}
}
答
使用“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]
也许会想不同的查询。更新不应该什么返还给您。 – Jonesopolis
你想要做的更新,然后获取数据吗?或者您想更新从药物表中的描述? – unlimit
是你在看UNION吗?是表格相关的吗? –