嵌套SQL查询

时间:2010-11-25 15:53:02

标签: sql tsql stored-procedures

我正在尝试学习SQL并尝试编写执行以下操作的SQL查询:

我有两张桌子:

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

我想先:

通过SalaryRangeTable迭代,选择beginRange和endRange

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

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

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

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分: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 

答案 1 :(得分:1)

试试这个

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

如果您需要独占比较,请使用&gt;和&lt;

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

答案 2 :(得分:1)

您应该能够加入表格,并使用distinct来摆脱重叠范围的重复:

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