我有两张这样的表
FirstTable
姓名年龄区
AAA 20 North
BBB 21 South
CCC 19 West
和
SecondTable
姓名年龄区
ZZZ 19 North
YYY 20 South
XXX 21 North
<24> WWW 24 NorthVVV 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)。在我的查询中有任何问题???
答案 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';
应该这样做