请注意,我仍然是数据库的初学者,但愿意学习!此问题与关键字"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);