簡體   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