SELECT *
FROM data WHERE (object,TCH_Traffic) IN
( SELECT object, MAX(TCH_Traffic)
FROM data
GROUP BY object
)
可以修改上述查询以与MS Access数据库一起运行。 我收到错误“修改MS Access 2010 db中附加的”选择语句“。
答案 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