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语法的帮助。