繁体   English   中英

SQL:修改内部联接以选择一行

[英]SQL: Modifying Inner Join to Select One Row

我有两个表AB ,我想在location上进行内部联接。 然而,对于每行A ,有很多行B ,其location相匹配。 我想最多得到与A相同的行数。 具体来说,我想在Bdate最早的那一行。 这是我到目前为止的内容:

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)

那是正确的方法吗?

您可以使用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;

SELECT TOP(1)*从A.LOCATION = B.LOCATION的内联接B按B.DATE排序

暂无
暂无

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

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