请帮助我找出导致此错误的原因
关键字' 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();
}
}
答案 0 :(得分:2)
以下是delete from join
语法
DELETE S --missing alias name
FROM stringInstrumentItem S
JOIN brand B
ON S.brandId = B.brandId
WHERE B.name = @brand
注意:您不需要sub-query
,因为Brand
表已加入
答案 1 :(得分:1)
改变这个:
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)
希望我帮助你:)。
答案 2 :(得分:0)
您必须提供要删除alias
的表格。我只是将表格命名为" sII "。此外,您不需要WHERE子句。您也可以在连接条件中限制删除。
DELETE sII
FROM stringInstrumentItem sII
INNER JOIN brand b
ON sII.brandId = b.brandId
AND b.name = @brand