C# 关键字“JOIN”附近的语法不正确。使用asp.net

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

请帮助我确定这个错误的原因

关键字“JOIN”附近的语法不正确

代码如下:

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。