我有两个表,A
和B
,我想在location
上进行内部联接。但是,对于A
中的每一行,B
中有许多行与location
相匹配。我想最终得到的行数最多与A
中的行数相同。具体来说,我想在B
最早的地方date
中进行选择。这是我到目前为止的内容:
SELECT *
FROM A
INNER JOIN B ON A.location = B.location
我将如何修改它,以使A
中的每一行仅与B
中的一行(使用最早的date
)连接在一起?
尝试:
SELECT *
FROM A
INNER JOIN B ON A.location = B.location
AND B.date = (SELECT MIN(date) FROM B)
这是正确的方法吗?
答案 0 :(得分:2)
您可以使用ANSI / ISO标准row_number()
函数:
SELECT *
FROM A INNER JOIN
(SELECT B.*, ROW_NUMBER() OVER (PARTITION BY B.location ORDER BY B.date) as seqnum
FROM B
) B
ON A.location = B.location AND seqnum = 1;
答案 1 :(得分:0)
选择顶部(1)*从A 内连接B A.LOCATION = B.LOCATION 在B.DATE之前订购