【问题标题】:Subquery in access with self-join, it does not recognize table alias使用自连接访问的子查询,它不识别表别名
【发布时间】:2014-03-21 10:39:51
【问题描述】:

我构建了一些子查询:

select 
    q2.addedquests, q2.daynum
from 
    qrNumberOfQuestsToDo as q2 
inner join 
    qrNumberOfQuestsToDo as q3 on q2.daynum > q3.daynum
where 
    q2.DayNum = (select max(q3.DayNum) from q3);

但 MS Access 无法识别子查询中的 q3。为什么?

【问题讨论】:

    标签: sql ms-access correlated-subquery


    【解决方案1】:

    为什么不呢?因为这就是 SQL 的工作方式。您可以引用子查询中的q3 列(例如在select、where、group by、having、order by 或on 子句中),但不是整个表格。

    我正在继续,但我认为该查询是无意义的。在一个地方,查询说q2.daynum > q3.daynum。在另一个,q2.daynum = q3.daynum。因此,查询不会返回任何内容。但是,您仍然可以将其表示为有效的 SQL。请注意,外部查询中并不真正需要q3。尝试使用相关子查询:

    select q2.addedquests, q2.daynum
    from qrNumberOfQuestsToDo as q2 
    where q2.DayNum = (select max(q3.DayNum)
                       from qrNumberOfQuestsToDo q3
                       where q2.daynum>q3.daynum
                      )  ;
    

    【讨论】:

    • 你说得对,这毫无意义。我想从同时低于我要检查的 daynum 的最高 daynum 中获得 addedquests 的值。
    • @user1548483 。 . .我建议您提出一个新问题,包括样本数据和期望的结果。这是一个不同的问题,因为您需要关于如何表述逻辑而不是理解 SQL 语法的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2011-08-17
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多