2010-11-25 298 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