将SQl查询转换为MS Access

时间:2015-12-18 12:32:23

标签: sql ms-access-2010

SELECT * 
FROM data WHERE (object,TCH_Traffic) IN 
( SELECT object, MAX(TCH_Traffic)
  FROM data
  GROUP BY object
)

可以修改上述查询以与MS Access数据库一起运行。 我收到错误“修改MS Access 2010 db中附加的”选择语句“。

enter image description here

2 个答案:

答案 0 :(得分:0)

只需使用相关子查询:

SELECT * 
FROM data
WHERE TCH_Traffic = (SELECT MAX(d2.TCH_Traffic)
                     FROM data as d2
                     WHERE d2.object = data.object
                    );

答案 1 :(得分:0)

MS Access'默认Jet / ACE SQL引擎可以使用WHERE子句处理IN条件中的子查询。但是,子查询必须返回一个列值。请考虑以下调整:

SELECT * 
FROM data WHERE (object) IN 
   ( SELECT object
     FROM data
     GROUP BY object
     HAVING TCH_Traffic = MAX(TCH_Traffic)
   );

但是,您可以简单地将派生表与INNER JOIN一起使用,并避免使用WHERE子句子查询。此外,相同的派生表查询可以保存为MS Access中的存储查询对象,并在join子句中显式引用:

SELECT * 
FROM data     
INNER JOIN
   ( SELECT object, MAX(TCH_Traffic) As maxTraffic
     FROM data
     GROUP BY object
   ) As dT    
ON data.object = dT.object
AND data.TCH_Traffic = dt.maxTraffic
相关问题