Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 具有自联接的access中的子查询,它无法识别表别名_Sql_Ms Access_Correlated Subquery - Fatal编程技术网

Sql 具有自联接的access中的子查询,它无法识别表别名

Sql 具有自联接的access中的子查询,它无法识别表别名,sql,ms-access,correlated-subquery,Sql,Ms Access,Correlated Subquery,我构建了一些子查询: 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。为什么?为什么不?因为S

我构建了一些子查询:

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就是这样工作的。您可以在子查询中引用
q3
列(例如在
select
where
groupby
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获得的addedquests值同时低于我要检查的daynum。@user1548483。我建议你问一个新问题,包括样本数据和期望的结果。这是一个不同的问题,因为您需要关于如何表达逻辑的帮助,而不是关于理解SQL语法的帮助。