2010-11-25 150 views
1

我想学习SQL并试图写一个SQL查询,执行以下操作:嵌套SQL查询

我有两个表:

SalaryRangeTable: id, beginRange, endRange 
UserInfoTable: id, salary, ... 

我想先:

通过SalaryRangeTable迭代,选择beginRange和endRange

然后对于该表中的每个条目,我希望能够:

SELECT id FROM UserInfoTable WHERE salary > beginRange AND salary < endRange 

因此,我的结果集将包含所有具有该范围的UserInfoTable标识。

任何想法?

感谢。

+0

如果你刚刚开始使用sql - 尽量避免在迭代方面思考..想想根据连接 – 2010-11-25 15:57:57

回答

2
select s.beginRange, s.endRange, u.id 
from SalaryRange s 
inner join UserInfo u on u.salary > s.beginRange AND u.salary < s.endRange 
+0

请注意````之间包含比较,而不是排他性。 – Guffa 2010-11-25 16:00:13

+0

查询修改为不具有包容性。 – RedFilter 2010-11-25 16:57:00

1

试试这个

Select id from userInfoTable u 
Where Exists (Select * From salaryRangeTable 
       Where u.Salary Between 
         BeginRange and endRange) 

如果您需要专属的比较,然后使用>和<

Select id from userInfoTable u 
Where Exists (Select * From salaryRangeTable 
       Where u.Salary > BeginRange 
       And u.Salary < endRange) 
1

你应该能够连接表,并使用distinct摆脱从重叠范围复制:

select distinct u.id 
from SalaryRange s 
inner join UserInfo u on u.salary > s.beginRange and u.salary < s.endRange