【问题标题】:Subquery Issue in Access 2007Access 2007 中的子查询问题
【发布时间】:2019-11-05 12:58:20
【问题描述】:

我有一个使用 Access 2007 的项目,但正在努力编写一个简单的子查询。在记录了某个比率后,我正在尝试从接下来 6 次出现的表格中获取结果。

我希望以下代码可以在 Access 中运行:

SELECT [runner name], [race ID], [race date], [placing], [class]
FROM runners
WHERE [runner name] IN
                 (SELECT [runner name] from 6F Full Form WHERE [ratio] >9       
ORDER BY [runner name], [race ID], [date], [placing], [class];

我收到以下错误消息。 NB 6F Full Form 是我编写的查询,我正在尝试在子查询中使用它。

查询表达式 '[runner name] IN (SELECT [runner name] from 6F Full Form WHERE [ratio] >9

中的语法错误

【问题讨论】:

    标签: sql ms-access ms-access-2007


    【解决方案1】:

    试试这个:

     (SELECT [runner name] 
     FROM [6F Full Form] 
     WHERE [ratio] >9       
     ORDER BY [runner name], [race ID], [date], [placing], [class]);
    

    【讨论】:

      【解决方案2】:

      您当前 SQL 代码的问题是包含空格或 reserved words 的字段/表/查询名称必须用方括号括起来 - 因此

      from 6F Full Form WHERE
      

      应该写成:

      from [6F Full Form] WHERE
      

      您的order by 子句中也可能存在拼写错误:

      SELECT ..., [race date], ...
      ...
      ORDER BY ..., [date], ...;
                       ^--------------- Should this be [race date]?
      

      值得补充的是,您也可以使用连接来实现这一点,例如:

      select
          r.[runner name],
          r.[race id],
          r.[race date],
          r.[placing],
          r.[class]
      from
          runners r inner join
          (select distinct f.[runner name] from [6f full form] f where f.[ratio] > 9) q 
          on r.[runner name] = q.[runner name]
      order by
          r.[runner name],
          r.[race id],
          r.[race date],
          r.[placing],
          r.[class]
      

      【讨论】:

      • 感谢 Lee Mac,它给了我想要的东西。赞赏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多