SQL Server查询,用于从相同的表中查找重复的行

时间:2019-01-26 02:45:24

标签: sql sql-server

我有一个问题,关于从一个表到另一个表查找相同的行。我有一张桌子供用户索取信息。这样一来,查询将针对另一个表。除ID列外,两个表都相同。

之外,查询中不涉及ID列
SELECT TOP 1 * 
FROM searchTable 
ORDER BY searchid DESC 

部分。

我的查询如下

SELECT TOP 1 * 
FROM searchTable 
ORDER BY searchid DESC(SELECT A.column1, A.column2,..............
                       FROM dbo.searchTable A
                       WHERE EXISTS (SELECT * FROM realTable B 
                                     WHERE A.Column1 = B.Column1 
                                       AND A.Column2 = B.Column2,
                                       .......
                                       AND A.lastColumn = B.lastColumn))

运行查询时得到的是查询表中最后输入的查询,这是正确的,但是我从realTable获取列出的所有行,好像WHERE EXISTS之后的所有内容都是毫无意义的。我需要的是queryTable中的单行查询,以列出realTable中与其相同的所有行。并非realTable的所有行。

2 个答案:

答案 0 :(得分:1)

您可以使用inner join代替exists

select B.* from searchTable A
inner join realTable B
on A.Column1 = B.Column1
and A.Column2 = B.Column2
.
.
.

它将返回realTable中与searchTable具有相同列的所有记录。

答案 1 :(得分:0)

通过理解上一个建议中的逻辑,我能够使它按我需要的方式工作。

看起来像这样。

DECLARE @searchID int =(从searchTable中选择MAX(searchID)个选择)

从realTable B中选择Column1,Column2 ........ LastColumn

存在的地方(选择*从searchTable中,其中searchID = @searchID并且A.Column1 = B.Column1和A.Column2 = B.Column2 ................ A。 LastColumn = B.LastColumn)

现在searchTable中的最后一个搜索将为我提供realTable中与该搜索匹配的所有行。