Ms access 如何提高子查询的性能?
我有以下两个问题:Ms access 如何提高子查询的性能?,ms-access,Ms Access,我有以下两个问题: SELECT qry_tbl_G_ov_uni_atp.ID, Max(qry_tbl_G_ov_uni_atp.nElo_Ov) AS MaxOfnElo_Ov FROM qry_tbl_G_ov_uni_atp GROUP BY qry_tbl_G_ov_uni_atp.ID; 以及: 两者都运行良好,在一两秒钟内。我想将它们合并到一个查询中,以便在相同的输出中有ID、MaxOfnElo\u Ov和MaxOfnElo\u Sur1 我知道我需要使用子查询,但我的尝试需要
SELECT qry_tbl_G_ov_uni_atp.ID, Max(qry_tbl_G_ov_uni_atp.nElo_Ov) AS MaxOfnElo_Ov
FROM qry_tbl_G_ov_uni_atp
GROUP BY qry_tbl_G_ov_uni_atp.ID;
以及:
两者都运行良好,在一两秒钟内。我想将它们合并到一个查询中,以便在相同的输出中有ID
、MaxOfnElo\u Ov
和MaxOfnElo\u Sur1
我知道我需要使用子查询,但我的尝试需要花费很长时间才能显示任何内容,然后几乎无法使用,因为任何滚动的尝试都会再次将访问锁定一段时间。我显然没有做对什么。这是我的子查询代码:
SELECT qry_tbl_G_ov_uni_atp.ID, Max(qry_tbl_G_ov_uni_atp.nElo_Ov) AS MaxOfnElo_Ov, (SELECT Max(tt.nElo_Sur)
FROM qry_tbl_G_ov_uni_atp as tt
WHERE tt.ID_C = 1
AND tt.ID = qry_tbl_G_ov_uni_atp.ID) AS MaxOfnElo_Sur1
FROM qry_tbl_G_ov_uni_atp
GROUP BY qry_tbl_G_ov_uni_atp.ID;
正如您所指出的,您可以使用子查询来实现这一点。通过使用
连接中的子查询
,您将从a
(您的第一个查询)获得所有结果,并从b
(您的第二个查询)获得匹配结果:
注意,这是未经测试的,并且假设a
和b
中的ID
是相同的(我相信是这样)
SELECT qry_tbl_G_ov_uni_atp.ID, Max(qry_tbl_G_ov_uni_atp.nElo_Ov) AS MaxOfnElo_Ov, (SELECT Max(tt.nElo_Sur)
FROM qry_tbl_G_ov_uni_atp as tt
WHERE tt.ID_C = 1
AND tt.ID = qry_tbl_G_ov_uni_atp.ID) AS MaxOfnElo_Sur1
FROM qry_tbl_G_ov_uni_atp
GROUP BY qry_tbl_G_ov_uni_atp.ID;
SELECT a.ID,
a.MaxOfnElo_Ov,
b.MaxOfnElo_Sur1
FROM (
SELECT qry_tbl_G_ov_uni_atp.ID,
Max(qry_tbl_G_ov_uni_atp.nElo_Ov) AS MaxOfnElo_Ov
FROM qry_tbl_G_ov_uni_atp
GROUP BY qry_tbl_G_ov_uni_atp.ID
) a
LEFT JOIN (
SELECT qry_tbl_G_ov_uni_atp.ID,
Max(qry_tbl_G_ov_uni_atp.nElo_Sur) AS MaxOfnElo_Sur1
FROM qry_tbl_G_ov_uni_atp
WHERE qry_tbl_G_ov_uni_atp.ID_C = 1
GROUP BY qry_tbl_G_ov_uni_atp.ID
) b ON b.ID = a.ID