我有一个问题,关于从一个表到另一个表查找相同的行。我有一张桌子供用户索取信息。这样一来,查询将针对另一个表。除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
的所有行。
答案 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中与该搜索匹配的所有行。