1

已在 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 子句中的语法错误

4

2 回答 2

5

Group是一个保留字。将该名称括在方括号中以避免混淆数据库引擎。您还可以为表名指定别名。

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列表中和查询中其他地方的字段名称的表源。同样,查询设计器可以为您提供正确的名称。

于 2013-04-16T21:36:34.953 回答
2

删除 周围的额外括号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;
于 2013-04-16T21:28:11.163 回答