根据另一个表中的信息搜索表

时间:2015-01-09 10:06:30

标签: sql sql-server-2008

我创建了一个已正确填充的临时表,但现在我想根据临时表中包含的两个字段搜索另一个表。这些字段为ForenameSurname。但我想搜索多个学生姓名和数量并返回指定的数据!我认为这个问题将在下面的图片中得到更好的解释:

我的临时表

enter image description here

我要搜索的表格(表2)

enter image description here

一旦我搜索了每个学生姓名,我希望与学生Forename, Surname Address, Pin and Score一起返回!

下面显示了我一直试图在没有运气的情况下实现这一目标!

Select TempTable.Forname, TempTable.Surmname, Table2.Address, Table2.Pin 
from TempTable
Where Exists ( Select * from Table2
               where Table2.Forname=TempTable.Forname and
               Table2.Surname=TempTable.Surname
              )

但它让我没有结果,我不知道为什么!

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题,那么这样做只是一个简单的连接:

select TempTable.Forename, TempTable.Surname, Table2.Address, Table2.Pin 
from TempTable
inner join Table2 on Table2.Forename = TempTable.Forename and Table2.Surname = TempTable.Surname

虽然我建议您在“人员”表(表2)上使用主键,然后使用此主键引用TepTable上的记录

答案 1 :(得分:2)

EXISTS仅用于“过滤”结果,它的列在EXISTS之外不可用。

你需要加入!

Select TempTable.Forname, TempTable.Surmname, Table2.Address, Table2.Pin 
from TempTable JOIN Table2 ON Table2.Forname=TempTable.Forname and Table2.Surname=TempTable.Surname;

答案 2 :(得分:1)

假设你确实调用了“Forname”列,你只需要一个简单的连接。这明确地与原始文本保持接近:

SELECT TempTable.Forname, TempTable.Surmname, Table2.Address, Table2.Pin 
FROM TempTable tt, Table2 t2
WHERE tt.Forename = t2.Forename
AND tt.Surname = t2.Surname;

您可以对INNER JOIN执行相同操作。

这都假设学生姓名是唯一的。