用于 SQL 内部联接的 MS Access 中的括号问题
Posted
技术标签:
【中文标题】用于 SQL 内部联接的 MS Access 中的括号问题【英文标题】:Trouble with parenthesis in MS Access for SQL Inner Joins 【发布时间】:2013-04-09 11:15:17 【问题描述】:已在 MS Access 中尝试过以下 SQL,但似乎无法正常工作,有人有更好的主意吗?
SELECT top 4 Student.STUDENT_DEGREE, Student.STUDENT_SEX,STUDENT_GROUP_ID,STUDENT_GROUP_ID2,RESULT_MARK
FROM (((Student)
INNER JOIN Result ON Student.STUDENT_ID=Result.RESULT_STUDENT_ID)
INNER JOIN Group ON RESULT_GROUP_ID = GROUP_ID)
where STUDENT_GROUP_ID <> ''
order by Result.RESULT_MARK desc;
每当我运行它时,我都会得到错误:
FROM 子句中的语法错误
【问题讨论】:
【参考方案1】:去掉Student
周围多余的括号:
SELECT top 4 Student.STUDENT_DEGREE,Student.STUDENT_SEX,STUDENT_GROUP_ID,STUDENT_GROUP_ID2,RESULT_MARK
FROM ((Student
INNER JOIN Result ON Student.STUDENT_ID=Result.RESULT_STUDENT_ID)
INNER JOIN Group ON RESULT_GROUP_ID = GROUP_ID)
where STUDENT_GROUP_ID <> ''
order by Result.RESULT_MARK desc;
【讨论】:
【参考方案2】:Group
是一个reserved word。将该名称括在方括号中以避免混淆数据库引擎。您还可以为表名指定别名。
FROM
(Student
INNER JOIN Result
ON Student.STUDENT_ID=Result.RESULT_STUDENT_ID)
INNER JOIN [Group] AS g
ON Result.RESULT_GROUP_ID = g.GROUP_ID
我不得不猜测最后一个ON
子句中哪些表包含这些字段。如果您在 Access 查询设计器的设计视图中设置连接,它将帮助您获得正确的名称。它还将添加 db 引擎对包含多个连接的任何查询所需的括号。
还要限定SELECT
列表和查询中其他地方的字段名称的表源。同样,查询设计器可以为您提供正确的名称。
【讨论】:
以上是关于用于 SQL 内部联接的 MS Access 中的括号问题的主要内容,如果未能解决你的问题,请参考以下文章