关键字“JOIN”附近的语法不正确。使用 asp.net [重复]
Posted
技术标签:
【中文标题】关键字“JOIN”附近的语法不正确。使用 asp.net [重复]【英文标题】:Incorrect syntax near the keyword 'JOIN'. using asp.net [duplicate] 【发布时间】:2017-12-12 16:27:33 【问题描述】:请帮我找出这个错误的原因
关键字“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();
【问题讨论】:
如果您打开 SQL Server Management Studio 并运行此查询 -DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHERE name = 'brand value here')
您将看到相同的错误。您需要让该查询在 Management Studio 中运行,然后尝试在您的应用程序中使用它。问题是 SQL 问题 - 不是 C# 或 ASP.NET。
您只能从一个表中删除,不能从多个表的连接中删除。您要从哪个表中删除记录?
顺便说一句,您根本不需要子选择。这将为您提供相同的记录,前提是您将使用 SELECT *
而不是 DELETE
:DELETE FROM stringInstrumentItem s JOIN brand b ON s.brandId = b.brandId WHERE b.name = @brand
【参考方案1】:
这里是做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
表已经加入
【讨论】:
这个可以。是的,我确实错过了 S。【参考方案2】:改变这个:
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)
希望能帮到你:)
【讨论】:
【参考方案3】:你必须给你想删除的表一个alias
。我刚刚将表命名为“sII”。此外,您不需要 WHERE 子句。您也可以在连接条件中限制删除。
DELETE sII
FROM stringInstrumentItem sII
INNER JOIN brand b
ON sII.brandId = b.brandId
AND b.name = @brand
【讨论】:
以上是关于关键字“JOIN”附近的语法不正确。使用 asp.net [重复]的主要内容,如果未能解决你的问题,请参考以下文章
关键字“Key”附近的语法不正确。 ASP.net 详细信息视图中的错误
System.Data.SqlClient.SqlException:关键字“FROM”附近的语法不正确
添加新的 Join 语句后 MS-SQL 存储过程引发错误。消息 102,级别 15,状态 1,第 279 行“WHERE”附近的语法不正确