Sql MS-Access中的子查询问题
我不太清楚为什么下面的查询不能在Access中运行。 它要求我给出s1.sku的值Sql MS-Access中的子查询问题,sql,ms-access,subquery,Sql,Ms Access,Subquery,我不太清楚为什么下面的查询不能在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 按
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
按照您的说法,您需要对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别名