检查子查询中的两个约束

时间:2014-10-21 08:36:07

标签: sql subquery

我有两张这样的表

FirstTable

姓名年龄区

AAA 20 North

BBB 21 South

CCC 19 West

SecondTable

姓名年龄区

ZZZ 19 North

YYY 20 South

XXX 21 North

<24> WWW 24 North

VVV 20 North

UUU 20 West

所以我的目标是得到第一个表的第一行名称(这个案例为'AAA'),并且来自居住在同一地区且年龄等于或大于1或小于1的第二个表匹配(此案例年龄= 20 ,年龄= 19,从第一张表中得出21 =。

为此,我写了一个像这样的查询

SELECT *

FROM Secondtable

WHERE年龄=(选择年龄FROM FristTatle WHERE Name ='AAA')或

  Age+1=(SELECT Age FROM FristTatle WHERE Name='AAA') OR

  Age-1=(SELECT Age FROM FristTatle WHERE Name='AAA')

  AND

  District=(SELECT District FROM FirstTable WHERE Name='AAA')

但是这个返回名字在不同的区域(这里它返回YYY和UUU)。在我的查询中有任何问题???

1 个答案:

答案 0 :(得分:2)

select * 
from FirstTable
inner join SecondTable
on SecondTable.District = FirstTable.District And
(SecondTable.Age - FirstTable.Age) between -1 and 1
where FirstTable.Name = 'AAA';

应该这样做