C# 关键字“JOIN”附近的语法不正确。使用asp.net
请帮助我确定这个错误的原因 关键字“JOIN”附近的语法不正确 代码如下:C# 关键字“JOIN”附近的语法不正确。使用asp.net,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,请帮助我确定这个错误的原因 关键字“JOIN”附近的语法不正确 代码如下: Label name = (Label)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("lblName"); string queryGuitarItems = "DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stri
Label name = (Label)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("lblName");
string queryGuitarItems = "DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHERE name = @brand)";
using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString()))
{
using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems))
{
connectionGuitarItems.Open();
commandGuitarItems.Connection = connectionGuitarItems;
commandGuitarItems.Parameters.Add(new SqlParameter("@brand", name.Text));
commandGuitarItems.ExecuteNonQuery();
connectionGuitarItems.Close();
commandGuitarItems.Parameters.Clear();
}
}
下面是执行“从联接中删除”语法的权限
删除S-缺少别名
从strings项目
加入B品牌
关于S.brandId=B.brandId
其中B.name=@brand
注意:您不需要子查询,因为Brand表已经被加入了您必须为要删除的表提供一个别名。我刚刚把表命名为sII。此外,您不需要WHERE子句。您也可以在联接条件中限制删除
DELETE sII
FROM stringInstrumentItem sII
INNER JOIN brand b
ON sII.brandId = b.brandId
AND b.name = @brand
更改此项:
DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHERE name = @brand)
为此:
DELETE FROM stringInstrumentItem
FROM stringInstrumentItem t1 JOIN brand t2 ON t1brandId = t2.brandId WHERE t1.brandId IN(SELECT t3.brandId FROM brand t3 WHERE name = @brand)
希望我能为您提供帮助:如果您打开SQL Server Management Studio并运行此查询-从stringInstrumentItem中删除加入stringInstrumentItem上的brand.brandId,其中stringInstrumentItem.brandId插入从brand中选择brand.brandId,其中name='brand value here',您将看到相同的错误。您需要在ManagementStudio中运行该查询,然后尝试在应用程序中使用它。此问题是SQL问题-不是C或ASP.NET。只能从一个表中删除,不能从多个表的联接中删除。您想从哪个表中删除记录?顺便说一下,您根本不需要子选择。如果您使用SELECT*而不是DELETE:DELETE FROM STRINGInstruments在s.brandId=b.brandId上加入品牌b,其中b.name=@brandthis执行此操作,那么这将获得相同的记录。是的,我确实错过了S。