ASP.NET GridView多表查询SQL报错:ON子句及表别名用法咨询
解决SQL JOIN语法错误及表别名使用问题
嘿,我一眼就瞅出你SQL语句里的问题啦!咱们一步步来把它修正:
问题根源拆解
你的SQL语句有两个关键错误,直接导致了“on附近出错”的问题:
- JOIN子句的语法格式不对,
ON关键字被错误地套在了括号里 - 表别名的引用方式有误,完全没必要给别名加方括号
修正后的SQL语句
SELECT [date], [title], [description], [views], [Id] FROM [bookmarks] b JOIN [creates] c ON b.Id = c.bookmarkid ORDER BY [date] DESC
关键细节说明
- JOIN语法规范:从你的语法风格来看,你应该用的是SQL Server,它的JOIN正确结构是
JOIN 表名 别名 ON 关联条件,ON子句根本不需要被括号包裹,你之前加的括号就是触发错误的直接原因。 - 表别名的使用:给表设置别名后,引用该表的列时直接用
别名.列名就可以,只有当列名或表名包含特殊字符(比如空格、SQL关键字)时,才需要用方括号包裹,像b.Id这种完全不需要给别名加方括号。
如果你的bookmarkid列名也没有特殊字符,甚至可以把所有方括号都去掉,让语句更清爽:
SELECT date, title, description, views, Id FROM bookmarks b JOIN creates c ON b.Id = c.bookmarkid ORDER BY date DESC
内容的提问来源于stack exchange,提问作者Ciprian Ivan
相关产品推荐
相关产品推荐

