我是SQL的新手,并且使用Access来运行Excel无法真正处理的查询。以下是查询的基本设计:
SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
在表B中,location
是完全相同的值。我想保留上面的左连接,但是将表A中的结果值限制为B列中的位置值。在我看来,这将是WHERE
子句,其中A.Location = max(B.Location)
或类似这一点。
有什么想法吗?
答案 0 :(得分:2)
如果要将表A中的结果值限制为表B中的位置值,为什么不能仅使用基于location
的连接?
SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B
ON A.ID = B.ID
AND A.location = B.location
答案 1 :(得分:0)
您可以使用DMax
表达式来获取B.Location
的重复非空值。并且可以在WHERE
子句中使用该表达式将A
行仅限制为仅匹配[Location]
的行:
SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
WHERE A.Location = DMax("[Location]", "B");
如果您不想使用DMax
,因为它是特定于访问权限的,您可以这样做:
SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
WHERE A.Location = (SELECT Max([Location]) FROM B);