[英]How do I get it to return every column in a table when using INNER JOIN on two tables,
我导入了 .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.