Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 MS-Access中的子查询问题_Sql_Ms Access_Subquery - Fatal编程技术网

Sql MS-Access中的子查询问题

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 按

我不太清楚为什么下面的查询不能在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

按照您的说法,您需要对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别名