【问题标题】:Trouble with parenthesis in MS Access for SQL Inner Joins用于 SQL 内部联接的 MS Access 中的括号问题
【发布时间】: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 子句中的语法错误

【问题讨论】:

    标签: sql ms-access inner-join


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多