使用第 2 部分的关键字"join"附近的语法不正确 asp.net



请注意,我仍然是数据库的初学者,但愿意学习!此问题与关键字"JOIN"附近的语法不正确有关。使用 asp.net。但是这一次,我想知道如何更新数据库中的数据。我已经尝试过这段代码,但它给了我一个错误"关键字'JOIN'附近的语法不正确"。请帮助我解决这个问题。

string queryGuitarItems = "UPDATE stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId SET stringInstrumentItem.brandId = @brandId IN (SELECT brand.brandId FROM brand WHERE name = @oldBrandName";
using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString()))
{
using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems))
{
List<SqlParameter> parameterGuitarItems = new List<SqlParameter>();
parameterGuitarItems.Add(new SqlParameter("@brandId", newName.Text));
parameterGuitarItems.Add(new SqlParameter("@oldBrandName", oldName));
connectionGuitarItems.Open();
GetParameterGuitarItems(commandGuitarItems,parameterGuitarItems.ToArray());
commandGuitarItems.ExecuteNonQuery();
connectionGuitarItems.Close();
commandGuitarItems.Parameters.Clear();
}
}

这里也是 GerParameterGuitarItems 方法的代码:

public void GetParameterGuitarItems(SqlCommand command, params SqlParameter[] parameterGuitarItems)
{
if (parameterGuitarItems != null && parameterGuitarItems.Any())
{
command.Parameters.AddRange(parameterGuitarItems);
}
}

附加信息:

table stringInstrumentItem(列 brandId 是外键,引用表品牌的主键,也叫 brandId(:

itemId brandId         model
1 1 xyz
2             1                                         abc
            3 2 HJK              

Table brand(具有名为 brandId 的主键,由表 strinInstrumentItem 引用(:

品牌ID     名称    图像
            1 Ibanez       xyz.jpg
2             Fender       abc.jpg 3             Gibson       hjk.jpg

主要目标是通过我的网格视图更新表品牌中名为名称的列。例如在brandId#1中,名字等于Ibanez,我想把它改成Jackson。它应该能够在没有异常错误的情况下工作。如何查询这个?

我猜你正在使用SQL Server(关于c#标签的东西(。 如果是这样,正确的语法是:

UPDATE sii
SET brandId = @brandId
FROM stringInstrumentItem sii JOIN
brand b
ON sii.brandId = b.brandId
WHERE b.brandId IN (SELECT b2.brandId FROM brand b2 WHERE b2.name = @oldBrandName);

如果我理解你想做什么,那么这太复杂了,这就足够了:

UPDATE sii
SET brandId = @brandId
FROM stringInstrumentItem sii 
WHERE sii.brandId IN (SELECT b.brandId FROM brand b WHERE b.name = @oldBrandName);

或者,在应该适用于任何数据库的版本中:

UPDATE stringInstrumentItem
SET brandId = @brandId
WHERE brandId IN (SELECT b.brandId FROM brand b WHERE b.name = @oldBrandName);

最新更新