簡體   English   中英

在兩個表上使用 INNER JOIN 時,如何讓它返回表中的每一列,

[英]How do I get it to return every column in a table when using INNER JOIN on two tables,

表 dbo.Ögon

表 dbo.CaseTable

我導入了 .csv 文件並從 .csv 文件中創建了一個表。 它包含與另一個表的列/值匹配的兩列。 This.csv 文件包含 2245 行,這也是我創建的名為dbo.Ögon的表中的行數

下面是我編寫的INNER JOIN查詢。

SELECT * FROM [dbo].[CaseTable] P
INNER JOIN [dbo].[Ögon] O
ON P.Personnummer = O.Pnr;

這將返回 9085 行的結果,這不是我要查找的結果。

但!

如果我改用這種方式編寫查詢。

SELECT DISTINCT Personnummer, Fotodatum
FROM [dbo].[CaseTable] P
INNER JOIN [dbo].[Ögon] O
ON P.Personnummer = O.Pnr;

我得到與 .csv 文件或表dbo.Ögon中完全相同的行,但我也看到兩列。

所以。 結果,我在運行查詢時要尋找的是查看每一列而不是兩列,其中包含我之前聲明的行數。

澄清。 我正在尋找一個名為 CaseKey 的列,它在表dbo.Ögon中不存在但存在於表dbo.CaseTable

因此,為什么我要尋找一個返回所有列的查詢,以便我可以看到 CaseKey 列。

希望我沒有讓這太混亂:)

您似乎有重復項——我猜是在ogon表中。 一種方法使用ROW_NUMBER() 如果這個解釋是正確的,你可以使用:

SELECT p.*, o.*
FROM [dbo].[CaseTable] p JOIN
     (SELECT o.*, 
             ROW_NUMBER() OVER (PARTITION BY o.Pnr, o.FotoDatum ORDER BY NEWID()) as seqnum
      FROM [dbo].[Ögon] o
     ) o
     ON p.Personnummer = o.Pnr AND seqnum = 1;

請注意,您通常會在ROW_NUMBER()中有一個ORDER BY來指定您想要行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM