MS Access 中的子查询问题
Posted
技术标签:
【中文标题】MS Access 中的子查询问题【英文标题】:Subquery question in MS Access 【发布时间】:2010-01-13 14:00:49 【问题描述】:我不太确定为什么以下查询不会在 Access 中运行。 它要求我给出 s1.sku 的值
SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr, q2.*
FROM tblSkuApex AS s1,
(SELECT MAX(s2.begindatum)
FROM tblskuapex s2
WHERE s1.sku = s2.sku) q2
【问题讨论】:
【参考方案1】:按照您的说法,您需要对 q2 表进行交叉连接,这将根据 s1 表的每条记录的 s1.sku 值进行更改,这是不可接受的。
我认为您应该将 q2 子查询作为列而不是表。由于您检索的是单个值,因此可以很容易地这样放置:
SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr,
(SELECT MAX(s2.begindatum)
FROM tblskuapex s2
WHERE s1.sku = s2.sku) as maxbegindatum
FROM tblSkuApex AS s1
甚至更好,为什么不将其作为普通聚合来获取,因为您从同一个表中请求最大值:
SELECT
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr, MAX(begindatum)
FROM tblSkuApex AS s1
group by
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr
注意:您可以在任何地方省略 s1 别名
【讨论】:
以上是关于MS Access 中的子查询问题的主要内容,如果未能解决你的问题,请参考以下文章