繁体   English   中英

将SQl查询转换为MS Access

[英]Convert SQl query to MS Access

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

是否可以将上述查询修改为与MS Access数据库一起运行。 我收到错误,提示“修改MS Access 2010数据库中所附的提示的select语句”。

在此处输入图片说明

只需使用相关的子查询:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM